mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-22 19:11:15 +00:00
7d3ba1c3fd
Updated the README.md to reflect new skill commands and improved descriptions for various workflows, including the addition of new skills like /test-spec, /code-review, and /release. Enhanced clarity on session boundaries and flow resolutions in the auto-chaining process. Removed the implementer agent file as it is no longer needed. Updated coderule and meta-rule documents to enforce stricter testing and implementation standards, ensuring real results are produced rather than simulated ones. Revised the autodev flow documentation to include a new release step and clarified the retrospective process. Adjusted the testing rules to specify coverage thresholds for critical paths. Co-authored-by: Cursor <cursoragent@cursor.com>
3.3 KiB
3.3 KiB
Step 1.5: Module Layout (default mode only)
Role: Professional software architect
Goal: Produce _docs/02_document/module-layout.md — the authoritative file-ownership map used by the implement skill. Separates behavioral task specs (no file paths) from structural file mapping (no behavior).
Constraints: Follow the target language's standard project-layout conventions. Do not invent non-standard directory structures.
Steps
- Detect the target language from
DOCUMENT_DIR/architecture.mdand the bootstrap structure plan produced in Step 1. - Apply the language's conventional layout (see table in
templates/module-layout.md):- Python →
src/<pkg>/<component>/ - C# →
src/<Component>/ - Rust →
crates/<component>/ - TypeScript / React →
src/<component>/withindex.tsbarrel - Go →
internal/<component>/orpkg/<component>/
- Python →
- Each component owns ONE top-level directory. Shared code goes under
<root>/shared/(or language equivalent). - Public API surface = files in the layout's
public:list for each component; everything else is internal and MUST NOT be imported from other components. - Cross-cutting concerns (logging, error handling, config, telemetry, auth middleware, feature flags, i18n) each get ONE entry under Shared / Cross-Cutting; per-component tasks consume them (see Step 2 cross-cutting rule).
- ADR cross-check: if
_docs/02_document/adr/exists, read everyStatus: AcceptedADR. For each, confirm the proposed module layout does not contradict the ADR'sDecision(e.g., an ADR mandating an event-bus boundary between two components must show up as aImports fromexclusion in the layout; an ADR locking a layering style must show up in the Layering table). If an ADR conflicts with the language-conventional layout from step 2, the ADR wins — record the conflict in a## ADR-driven exceptions to the conventional layoutsection ofmodule-layout.mdwithSee ADR NNN_<slug>references. If the ADR conflict is irreconcilable (the ADR demands something the language genuinely cannot express), STOP and ask the user A/B/C: (A) update the ADR via plan Step 4.5 supersede flow, (B) accept a layered exception with documented rationale, (C) re-open architecture. - Write
_docs/02_document/module-layout.mdusingtemplates/module-layout.mdformat. Each Per-Component Mapping entry that is governed by an ADR includes a trailing> See ADR NNN_<slug>line.
Self-verification
- Every component in
DOCUMENT_DIR/components/has a Per-Component Mapping entry - Every shared / cross-cutting concern has a Shared section entry
- Layering table covers every component (shared at the bottom)
- No component's
Imports fromlist points at a higher layer - Paths follow the detected language's convention
- No two components own overlapping paths
- If
_docs/02_document/adr/exists with Accepted ADRs, every layout decision that an ADR governs has a trailing> See ADR NNN_<slug>reference - No Accepted ADR is contradicted by the layout without a documented exception
Save action
Write _docs/02_document/module-layout.md.
Blocking
BLOCKING: Present layout summary to user. Do NOT proceed to Step 2 until user confirms. The implement skill depends on this file; inconsistencies here cause file-ownership conflicts at batch time.