make-work · diff
git:20260725.d478789 to git:20260726.8e7c950
57 added, 54 removed. Audit A to A.
---
name: "make-work"
- description: "Read the following files to understand the project:"
+ description: "Read `docs/VISION.yaml` (goals and boundaries), `docs/ARCHITECTURE.yaml`"
---
# make-work command
Apply this command workflow. Treat any text after its invocation as the command input.
# Command: Make Work
- Read the following files to understand the project:
+ Read `docs/VISION.yaml` (goals and boundaries), `docs/ARCHITECTURE.yaml`
+ (design and components), `docs/road-map.yaml` (release schedule and use-case
+ status), `docs/constitutions/design.yaml` (format rules), and the
+ product-requirements and use-case READMEs where they exist.
- 1. **docs/VISION.yaml** - Project goals and boundaries
- 2. **docs/ARCHITECTURE.yaml** - System design and components
- 3. **docs/road-map.yaml** - Release schedule and use case status
- 4. **docs/constitutions/design.yaml** - Documentation format rules and standards
- 5. **docs/specs/product-requirements/README.md** (if exists)
- 6. **docs/specs/use-cases/README.md** (if exists)
+ Then establish where the work actually stands. **Treat the tracker and the
+ roadmap as claims to verify, not as ground truth** — a task that builds on
+ "done" work fails when that work was never merged.
- First, check the current state of work. Treat the issue tracker and the roadmap as claims to verify, not as ground truth — a later task that builds on "done" work fails if that work was never actually merged.
+ ```bash
+ gh issue list --repo <owner>/<repo> --state all
+ ```
- 1. Run `gh issue list --repo <owner>/<repo> --state all` to see open and closed issues
- 2. Check what's in progress, what's completed, what's pending
- 3. **Check docs/road-map.yaml** for release schedule and use case status
- 4. **Verify claimed-complete work against the repository.** A closed issue or a "done" roadmap entry is a claim that code was merged, not proof of it. For each release or issue marked done that later work would depend on:
- - Confirm a merged pull request closed it. An issue closed as completed with no merged PR is not done (`gh issue view <n> --json stateReason` and check its linked PRs).
- - Confirm the implementation exists in the source tree, not just the spec. Grep for the types, functions, or files the issue said it would produce, and check `git log` for the commit that added them.
- - Watch for stubs: a function that returns an empty or placeholder result with a "implemented in a later release" comment is not an implementation.
- - If the project exposes a code-readiness check (for example `mage status`), run it and trust it over issue labels.
- Anything that fails these checks is unbuilt regardless of tracker state; plan an implementation task for it before any task that depends on it.
- 5. **Run the repo's consistency check** (`mage audit`, or `mage analyze` where the target is named that way; skip if neither exists) to identify specification issues:
- - Orphaned PRDs (not referenced by use cases)
- - Missing test suites (use cases without test suites)
- - Broken references (invalid touchpoints, missing files)
- - Use cases not in roadmap
+ For every release or closed issue that later work depends on:
- Then, summarize:
+ - Confirm a **merged pull request** closed it. Closed-as-completed with no
+ merged PR is not done (`gh issue view <n> --json stateReason`, then check its
+ linked PRs).
+ - Confirm the implementation exists in the source tree, not just in the spec.
+ Grep for the types, functions, or files it promised; find the commit in
+ `git log`.
+ - Watch for stubs. A function returning a placeholder with an
+ "implemented in a later release" comment is not an implementation.
+ - If the project exposes a readiness check (`mage status`), trust it over
+ issue labels.
- 1. What problem this project solves
- 2. The high-level architecture (major components and how they fit together)
- 3. The current state of implementation (what's done, what's in progress)
- 4. **Current release**: Which release we are working on and which use cases remain
- 5. Current repo size: run `mage stats` and include its output (Go production/test LOC, doc words)
+ Anything failing those checks is unbuilt regardless of tracker state — plan its
+ implementation before anything that depends on it.
- Based on this, propose next steps using **release priority**:
+ Run the consistency check if one exists (`mage audit`, or `mage analyze` where
+ it is named that way) to surface orphaned PRDs, use cases without test suites,
+ broken references, and use cases missing from the roadmap.
- 1. **Focus on earliest incomplete release**: Prioritize completing use cases from the current release in road-map.yaml
- 2. **Early preview allowed**: Later use cases can be partially implemented if they share functionality with the current release
- 3. **Assign issues to releases**: Each issue should map to a use case in road-map.yaml; if uncertain, use release 99.0 (unscheduled)
- 4. If epics exist: suggest new issues to add to existing epics, or identify what to work on next
- 5. If no epics exist: suggest epics to create and initial issues for each
- 6. Identify dependencies - what should be built first and why?
+ Then summarize: the problem the project solves, its architecture, what is
+ built versus in progress, which release is current and which of its use cases
+ remain, and the repo size from `mage stats`.
- When proposing issues (per crumb-format rule):
+ ## Proposing the work
- 1. **Type**: Say whether each issue is **documentation** (markdown in `docs/`) or **code** (implementation).
- 2. **Required Reading**: List files the agent must read before starting (PRDs, ARCHITECTURE sections, existing code). This is mandatory for all issues.
- 3. **Files to Create/Modify**: Explicit list of files the issue will produce or change. For docs: output path. For code: packages/files to create or edit.
- 4. **Structure** (all issues): Requirements, Design Decisions (optional), Acceptance Criteria.
- 5. **Documentation issues**: Add **format rule** reference and **required sections** (PRD: Problem, Goals, Requirements, Non-Goals, Acceptance Criteria; use case: Summary, Actor/trigger, Flow, Success criteria).
- 6. **Code issues**: Requirements, Design Decisions, Acceptance Criteria (tests/behavior); no PRD-style Problem/Goals/Non-Goals.
+ Prioritize by release. Finish the earliest incomplete release's use cases
+ first; a later use case may be previewed when it shares functionality with the
+ current one. Map every issue to a use case in `road-map.yaml` — release 99.0
+ when unscheduled. Add to existing epics where they fit, propose new epics where
+ they do not, and say what must be built first and why.
- **Code task sizing**: Target 300-700 lines of production code per task, touching no more than 5 files. This keeps tasks completable in a single session while being substantial enough to make meaningful progress. Split larger features into multiple tasks; combine trivial changes into one task.
+ Each proposed issue carries:
- **Task limit**: Create no more than 10 tasks at a time. If more work is needed, create additional tasks after completing some of the current batch.
+ - **Type** — documentation (markdown under `docs/`) or code.
+ - **Required Reading** — the files the agent must read first. Mandatory.
+ - **Files to Create/Modify** — explicit, with the output path for docs and the
+ packages for code.
+ - **Requirements, Acceptance Criteria**, and Design Decisions where they matter.
+ - Documentation issues additionally name their **format rule** and required
+ sections. Code issues state acceptance as tests or observable behaviour, not
+ as PRD-style goals.
- Don't create any issues yet - just propose the breakdown so we can discuss it.
+ Size code tasks at 300-700 production lines across no more than 5 files —
+ finishable in one session, substantial enough to matter. Split larger features;
+ combine trivial ones. **No more than 10 tasks at a time.**
- After we agree on the plan and you create issues:
+ **Propose the breakdown and create nothing** until we have agreed on it.
- - **Create each issue using `/gh-issue-push`**, not `gh issue create` directly. `/gh-issue-push` searches for ripple effects before drafting the issue body, ensuring every affected file and field is enumerated. Issues created without this step will miss cross-references.
- - To link a sub-issue to a parent, use:
+ Then create each issue with `/gh-issue-push` rather than `gh issue create`: it
+ traces every file and field the change touches before drafting, and issues
+ written without that step miss cross-references. Link sub-issues to their parent:
- ```bash
- gh api repos/<owner>/<repo>/issues/<parent>/sub_issues \
- --method POST \
- --field sub_issue_id=$(gh api repos/<owner>/<repo>/issues/<sub-number> --jq '.id')
- ```
+ ```bash
+ gh api repos/<owner>/<repo>/issues/<parent>/sub_issues \
+ --method POST \
+ --field sub_issue_id=$(gh api repos/<owner>/<repo>/issues/<sub-number> --jq '.id')
+ ```
After you implement work:
- Commit your changes with a clear message
- Log token usage: `gh issue comment <id> --repo <owner>/<repo> --body "tokens: N"`
- Close completed issues: `gh issue close <id> --repo <owner>/<repo>`
- File any new issues via `/gh-issue-push`; note them for the user if not created in this session