silverhack / silverhack/monkey365

Reorganize repository structure to isolate the PowerShell module

Open
#181 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement epic priority-high
Dominant language
PowerShell
Stars
1.3k
Forks
140
PR merge metrics
No merged PRs in 30d

Description

Summary

Monkey365 continues to grow as an open-source project. As adoption increases, the repository is also accumulating multiple assets that are not part of the PowerShell module itself, including documentation, pipelines, tooling, docker files, examples, etc...

To improve maintainability, packaging, CI/CD workflows, and future Azure DevOps integration, the repository structure should separate the PowerShell module from repository-level resources.

Proposed structure
repo_root/
  .github/
  src/
    monkey365/
  tests/
  docs/
  docker/
  examples/
  LICENSE
  README.md
Goals
  • Establish a clear separation between:
    • The PowerShell module
    • Repository tooling and supporting resources
  • Improve packaging and publishing workflows
  • Simplify CI/CD pipeline integration
  • Make the repository easier to scale without cluttering the module root
Important note

This proposal does not introduce major internal refactoring of the module.

The current internal structure (core/, collectors/, rules/, config/, etc.) would remain intact initially and simply move under:

src/monkey365/

Example:

src/
  monkey365/
    monkey365.psm1
    monkey365.psd1
    core/
    collectors/
    rules/
    config/
Benefits
  • Cleaner repository organization
  • Safer packaging boundaries
  • Easier CI/CD automation
  • Better scalability for additional tooling and documentation
  • Consistency with common open-source and DevOps repository layouts
Implementation considerations

Achieving this repository reorganization will require several supporting tasks beyond simply moving directories.

Examples include:

  • Updating documentation and examples
  • Revising the main README.md
  • Adjusting CI/CD and packaging workflows
  • Updating import/module loading paths where required
  • Improving Pester test coverage for the core module
  • Removing outdated or unused GitHub Actions workflows
  • Removing duplicated or legacy code where practical
  • Validating compatibility with existing automation and scripts
  • Reviewing tests and development tooling

These tasks should be handled incrementally to reduce migration risk and maintain backward compatibility during the transition.

Future work (separate enhancements)

Potential future improvements may include:

  • Improving module loading logic
  • Clearer separation of runtime and core components
  • Modularization of internal services and providers
  • Decoupling collectors, rules, and output components

These changes are intentionally outside the scope of this proposal to minimize migration risk.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by inventorying the current module, tests, documentation, examples, docker assets, packaging files, and .github workflows against the proposed src/monkey365 layout. Review README.md, CI/CD workflows, module-loading paths, and Pester coverage before planning the move. Done means the module is isolated under src/monkey365 and documentation, automation, packaging, tests, and scripts still work with the new structure.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, powershell
Domain
build-system, ci-cd, tooling
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.