Workflow guide · odytrice/metaskills1 November 2026 · master @ 22cc809Current behavior
The MetaSkills workflow, from raised issue to merged pull request

The New SDLC, Run by Agents.

A project manager defines the issue, an architect plans it (first finding the root cause when a bug calls for it), a developer builds it, and the architect reviews the pull request and merges it. A QA agent tests what shipped and files the bugs it finds as new issues. Each agent runs a few narrow skills, hands off with evidence, and stops rather than guessing.

  • Repositorygithub.com/odytrice/metaskills. Clone it and run .\sync.ps1 on Windows or ./sync.sh on macOS and Linux to install into all three harnesses.
  • PurposeExplain who does the work, and how the skills compose into one workflow
  • AudienceAnyone running or adopting the MetaSkills harness
  • SourceThe fourteen SKILL.md files and four agent definitions at commit 22cc809
  • DiagramsPlantUML and draw.io, rendered to inline SVG; the sources are embedded in this file
I.

The agents

Four of them, each with one job, a short list of skills, and a hard limit.

II.

The lifecycle

Five statuses; each move belongs to one agent, through one skill.

III.

The skills

Fourteen playbooks, the orchestrators that sequence them, and the rules they share.

1The agents

Four agents do the work

Every step of the workflow is carried out by one of four agents, dispatched from your own session. Meet the agents first: the skills that follow are the playbooks they load, and each agent's limits decide who may do what.

project-manager
defines the What
issue-raise, issue-refine
project-manager...
architect
plans, diagnoses, reviews, merges
issue-plan, issue-diagnose, code-review
architect...
developer
builds it, then fixes findings
issue-implement
developer...
quality-assurance
tests the running app
qa
quality-assurance...
You, the coordinator
your own session, not an agent
dev-cycle or burndown
You, the coordinator...
dispatches each agent
in a fresh context
dispatches each agent...
a Ready issue
a Ready issue
the plan ledger
the plan ledger
one pull request
one pull request
review findings to fix
review findings to fix
merged work
merged work
a reproduced bug,
filed to Backlog
a reproduced bug,...
Text is not SVG - cannot display
Fig. 1The relay. Each arrow is what one agent hands the next. The architect plans the work, diagnosing a bug's root cause first when the bug calls for it, and later reviews the developer's pull request; findings go back to the developer for at most two rounds of fixes, and the architect merges once the review is clean. The last line in each box lists the skills that agent runs. Your session dispatches every agent in a fresh context and never does their work itself.
Plans and judges

architect

The judgment agent. In dev-cycle phase 1 it designs the How and claims the issue; when a bug calls for it, it first finds the Why in one root-cause comment. In phase 3 the same architect, dispatched in a fresh context with none of the build's history, reviews the pull request and merges it.

Runs
issue-plan, issue-diagnose, code-review
Writes
The claim, the plan ledger, the RCA comment, the review comment, and the squash merge. Locally, only .tmp-* staging files and the diagnosis or review worktree, all removed afterward.
Never
Writes production code, designs a fix inside the RCA, or reviews a change it implemented or substantially edited.
Returns
The ledger link, approach, task count, and blockers; the RCA link and conclusion; or the review URL, assessment, and merge result.
Builds

developer

The implementation agent, dev-cycle phase 2. It turns the architect's plan ledger into one pull request, then fixes the reviewer's enumerated findings in at most two revision rounds.

Runs
issue-implement
Writes
A branch and commits in its own .worktrees/ checkout, the pull request, ledger check-offs, and the move to In review.
Never
Creates a plan ledger, claims an issue, or guesses. Ambiguity and design trade-offs go under the ledger's Blockers, and it stops.
Returns
The PR URL, changed paths, validation results, ledger state, and residual risks.
Defines and reports

project-manager

Owns the What. It files issues, refines them until they say what done means, and reports on the work. As a subagent it cannot hold a question gate, so it returns its questions for the caller to ask.

Runs
issue-raise, issue-refine, backlog-refine, weekly-review, project-status
Writes
New issues, and body, label, or status changes once approved. Locally, only Docs/ and .tmp-* bodies; its shell is read-only.
Never
Writes production code, or changes an issue body, labels, or board status without approval.
Returns
The issue URL, or a proposal with open questions; for reports, the file path.
Tests

quality-assurance

Tests a running app, staging by default, through Playwright MCP browser tools, and files only the bugs it can reproduce. burndown dispatches a fresh one to sweep a batch's merged work.

Runs
qa
Writes
One bug issue per root cause, filed through issue-raise. Edits and shell are unrestricted for testing.
Never
Drives the browser with scripts, npx playwright, or browser_run_code_unsafe; builds features; or captures secrets or personal data.
Returns
Workflows tested, issues filed, unfiled bugs with reasons, non-reproducible observations, and limits.
Not an agent

You, the coordinator

The orchestrators dev-cycle and burndown are not agents. They run in your own session (burndown runs dev-cycle once per issue), dispatch each agent with only the issue reference and the facts it needs, check what comes back, and dispatch the next. They never write code, post plans, move the board, or merge.

Without subagents, run each phase in a fresh session that loads only that phase's skill, and never review in the session that implemented. Two skills belong to no agent: any session can run setup and paper-doc.

How each harness enforces the agents' permissions

Each agent's instructions are identical in its Claude Code, opencode, and Codex definition, and lint checks that they match. The permission envelopes differ, because each harness expresses permissions its own way.

AgentopencodeClaude CodeCodex
architectEdits denied except .tmp-*Read, Grep, Glob, Bash, Write, Edit, Skillworkspace-write
developerEdit and bash allowedNo tool list, so every toolworkspace-write
project-managerEdits only Docs/** and .tmp-*; bash asks, except gh, git log/status/diff, rg, grepSame tools as architectworkspace-write
quality-assuranceEdit and bash allowedArchitect's tools plus mcp__playwright__*danger-full-access, approval never

Matching instructions do not prove matching capability: check the effective permissions in each harness before relying on an agent's limits. No agent definition pins a model; choose models per harness.

2The lifecycle

Five statuses, one owner per move

The board Status field is both the progress tracker and the lock. Each forward move belongs to one agent, made through exactly one skill; the coordinator never moves it.

Backlogbody holds the WhatReadythe only claimable statusIn progressplan ledger holds the HowIn reviewone fully resolving PRDonemerged, issue closedbacklog-refine runs the nextstep in waves. QA sweeps fileregressions here as new issues.An existing ledger, or any statusafter Ready, meansclaimed.Resuming needs explicit userauthorization.GitHub automation moves it, orcode-review does when it is off.project-manager· issue-raisefiles it at the new-issue statusproject-manager· issue-refinerewrites the body after approvalarchitect· issue-planclaims it, then posts the ledgerdeveloper· issue-implementopens the PR with Closes #narchitect· code-reviewsquash-mergesrevision round,at most two
Fig. 2Status transitions, the agent that makes each one, and the skill it uses. The names follow the README; each project maps them to its own Status options in AGENTS.md § Project Board.

The What, the Why, and the How

The issue body is the durable spec and never holds a design or a task list; a bug's body never holds a fix. The design lives in exactly one comment whose first line is <!-- plan-ledger -->. Only issue-plan creates it; everyone else edits it in place by its numeric REST id.

<!-- plan-ledger -->
## Plan
## Approach
## Touch Points
## Validation
## Risks
## Tasks
- [ ] Task: unit, code area, validation signal
## Sequence
## Blockers
_None._

Approach, Tasks, and Blockers are required. issue-implement starts only when Blockers reads _None._ and checks a task off only once it is implemented, validated, and in the branch.

A bug that meets issue-diagnose's criteria gets its Why first, in one comment whose first line is <!-- root-cause -->: the observed failure, an evidence-marked why chain, the component that should already handle it, and a reproduction. It moves no status and designs no fix; it reaches the developer only through the body and the ledger.

The board moves in the figure are the only status writes in the whole workflow. dev-cycle, burndown, and backlog-refine dispatch the skills that make them, then verify the result.

StatusEntered throughRun byWhat is written
Backlogissue-raiseproject-manager or the userThe issue, from the repository template or Summary, Context, Expected outcome, Notes. One Type when Types are enabled, existing labels only, an assignee, the board item.
Readyissue-refineproject-managerThe rewritten body, after the user approves it. No comments. A split keeps the parent and adds native sub-issues.
In progressissue-planarchitectThe claim, then the single plan-ledger comment: approach, touch points, validation, risks, tasks, sequence, blockers.
In reviewissue-implementdeveloperA branch issue-<n>-<slug> from a .worktrees/ checkout, the PR, and ledger check-offs.
Donecode-reviewarchitect, in a fresh contextThe review comment and the squash merge. Done is set only for issues the PR actually closed, and only when GitHub automation is off.
Boardless projects

board: none is a declaration, not a default

A project that declares board: none in § Project Board skips every board read, claim, and move, and each skill reports that it did. Missing or incomplete board facts are different: they stop the skill, and are never reinterpreted as board: none.

Without a board, ownership still comes from the ledger and its tie-break, an existing ledger still needs an explicit resume, and the batch skills need an explicit list, label, or milestone because there is no Ready column to read.

3The skills

Fourteen skills in five groups

The skills are the agents' playbooks. Two define the work, one diagnoses bugs, and three deliver it; three orchestrators sequence them for one issue or a batch; five more verify, report, or support.

Orchestrate
Orchestrate
backlog-refine
grooms a batch
project-manager
backlog-refine...
dev-cycle
ships one issue
your session
dev-cycle...
burndown
ships a batch in waves
your session
burndown...
Define the What
Define the What
issue-raise
files the issue
project-manager
issue-raise...
issue-refine
scope and acceptance
project-manager
issue-refine...
Find the Why, deliver the How
Find the Why, deliver the How
issue-plan
claim and plan ledger
architect
issue-plan...
issue-diagnose
a bug's root cause
architect
issue-diagnose...
issue-implement
worktree and PR
developer
issue-implement...
code-review
review and merge
architect
code-review...
Verify and report
Verify and report
qa
tests the running app
quality-assurance
qa...
weekly-review
weekly report
project-manager
weekly-review...
project-status
open-work map
project-manager
project-status...
Support
Support
setup
environments
any session
setup...
paper-doc
HTML documents
any session
paper-doc...
Backlog issue
Backlog issue
Ready issue
Ready issue
plan ledger
plan ledger
pull request
pull request
RCA comment
RCA comment
one cycle
per issue
one cycle...
closing QA sweep
closing QA sweep
one worker per item
one worker per item
1 plan
1 plan
2 implement
2 implement
3 review and merge
3 review and merge
reproduced bugs
reproduced bugs
Text is not SVG - cannot display
Fig. 3Who hands work to whom. The middle row is the lifecycle from Fig. 2. Solid arrows hand work on; dashed arrows dispatch, and the numbers on dev-cycle's arrows are its phases. The last line in each box names the agent or session that runs the skill. issue-diagnose runs only for a bug that needs a root cause: issue-refine, issue-plan, or code-review can call for it, dev-cycle or backlog-refine dispatches it, and its RCA comment feeds the plan. Not drawn: dev-cycle and burndown also send unrefined or oversized issues back to issue-refine.
Define the What

Say what done means

issue-raise files a classified, assigned issue at the board's new-issue status. issue-refine settles scope and acceptance criteria in the body, then moves it to Ready. Neither designs anything; design questions become constraints for the plan, and a bug report carries no fix.

Find the Why, deliver the How

Diagnose, plan, build, review

For a bug that calls for it, issue-diagnose finds the root cause in one RCA comment without designing the fix. issue-plan claims the issue and writes its plan ledger, fixing that cause in the component that should already handle it. issue-implement turns that ledger into one fully resolving PR. The architect who planned it then runs code-review in a fresh context, reviews the PR, and squash-merges when every criterion holds.

Orchestrate

Sequence, never do

dev-cycle runs the three delivery phases for one issue, diagnosing a bug first when it needs it. burndown runs dev-cycle across dependency-ordered waves and closes with a QA sweep. backlog-refine fans issue-refine out across a backlog, diagnosing approved bugs before refining them. None of them writes code, moves the board, or merges.

Verify and report

Feed findings back in

qa tests a running app through Playwright MCP and files each reproduced bug through issue-raise, so regressions re-enter the lifecycle at Backlog. weekly-review and project-status are read-only on GitHub and write only under Docs/status/.

Support

Outside the lifecycle

setup provisions local, Docker Compose, or CI environments from the documented commands. paper-doc writes portable HTML documents such as this one. Deployment is deliberately absent: it differs in every project, so it lives in the consuming repository.

Where to start

You haveStart withIt hands off to
An idea, bug, or follow-up with no issue yetissue-raiseNothing; the issue waits in Backlog for refinement
An issue that is vague or bigger than one PRissue-refineissue-raise for native sub-issues when it splits
A backlog to groombacklog-refineissue-refine, one worker per item
One issue to shipdev-cycleissue-plan, issue-implement, code-review
A list, label, milestone, or board column to shipburndowndev-cycle per issue, then qa
A bug whose cause is unclearissue-diagnoseissue-refine or issue-plan, which work from its RCA comment
An issue that needs only a designissue-plandev-cycle later, resumed explicitly
A PR, a branch, or uncommitted changescode-reviewNothing; it reports, and merges in PR mode
A running app to testqaissue-raise for each reproduced bug
An environment to set up or repairsetupNothing
A weekly status reportweekly-reviewNothing; it writes to Docs/status/
A "what is left" questionproject-statusSuggested batches for backlog-refine or burndown

Every skill has a same-named wrapper in commands/ for opencode and Codex. Claude Code invokes the skill directly as /<name>.

4Ground rules

The rules every skill shares

These invariants let narrow skills compose without stepping on each other. Each is stated once, in the skill that owns it, and referenced everywhere else.

RuleIn practiceOwner
Facts come from AGENTS.mdEvery skill names the sections it needs. A missing or insufficient section stops it; a project fact is never guessed. A MetaSkills version line says which template version the file satisfies: a newer minor version means the project must update its AGENTS.md or issue templates.AGENTS.template.md
Why before How for bugsA bug that meets the criteria gets one RCA comment before any plan, and the plan fixes its cause instead of adding machinery around the symptom. Bug reports never carry a fix.issue-diagnose
Status is the lockOnly Ready can be claimed. An existing ledger or any later status means claimed. Resuming needs explicit user authorization; a batch dispatch is not authorization.issue-plan
Implementer is not reviewerA reviewer that authored or substantially edited the change stops and spawns a fresh one. The reviewer alone merges; callers only record the result.code-review
Delivery fully resolvesThe PR's final line is Closes #n, and exactly that issue's canonical URL is registered as the closing reference. Partial scope stops for repair or an approved split, never a partial Refs.issue-implement
Loops are boundedAt most two fix and re-review rounds, then the PR is parked. A re-review classifies each prior finding and adds only fix-induced regressions or release-threatening Critical or High issues it could not have raised earlier. A refinement an RCA asks for runs once; a re-diagnosis spends the cycle's single plan repair and a revision round, and a repair that changes nothing parks the PR.dev-cycle, code-review
One severity ladderCritical, High, Medium, Low, everywhere. Critical or High blocks commits and merges.code-review
Work is isolatedImplementation and review each run in their own .worktrees/ checkout. Review is pinned to the captured head SHA; only clean worktrees inside .worktrees/ are removed.issue-implement, code-review
No hidden stateThe board and issue comments are the only workflow state. Batch tracking lives in the conversation; multi-line bodies are staged in .tmp-* files and deleted.Every skill
Findings compoundA recurring review finding or guardrail gap becomes a proposed amendment to AGENTS.md or the review checklist.code-review, burndown

One owner per shared mechanic

MechanicOwner
Board transitions, complete board reads, ledger creation and tie-breakissue-plan
RCA criteria and the root-cause commentissue-diagnose
Native sub-issue linkingissue-raise
Implementation worktree and PR deliveryissue-implement
Review worktree, squash merge, after-merge stepscode-review
The two-round revision bounddev-cycle
Login order and capture rules for a running appqa

Where the workflow stops on purpose

A required AGENTS.md section is missing
Any skill names the section and stops. Adding the section is the fix; the skill never infers it.
The issue is already claimed
issue-plan, dev-cycle, and burndown report claimed and leave it alone, even when the ledger looks abandoned. Only an explicit user resume continues it.
The plan needs a decision
issue-plan's approval gate triggers on materially different approaches with no clear winner, widened scope or a broken Notes constraint, a split, a data migration or backfill, a public contract change, a security or permission decision, a What that is still ambiguous, or a bug's RCA that needs evidence. It asks with a recommendation and stops before claiming.
A bug needs a diagnosis first
issue-refine or issue-plan reports needs diagnosis and stops before Ready or the claim. dev-cycle or backlog-refine runs issue-diagnose, then resumes. An RCA asking for refinement gets one round under the user's approval; a second request stops.
Implementation hits a design question
issue-implement records it under Blockers and stops. dev-cycle may send the ledger back to the architect once, for a same-cycle repair, re-diagnosing first if the blocker contradicts the RCA; a second blocker ends the cycle.
Review cannot converge or merge
After two revision rounds, or as soon as the developer contests a finding, dev-cycle parks the PR with both positions. A review that finds the plan treats a symptom triggers one re-diagnosis and repair; a second, or a repair that changes nothing, parks the PR. An unmet merge criterion short of Critical or High is reported and the PR stays open for the user.
The data is incomplete
A board read whose item count does not match totalCount, an issue URL with zero or several board matches, or a partial page set stops the operation. Samples are never reported as totals.
5One issue

dev-cycle, phase by phase

The coordinator writes no code, posts no plans, moves no status, and merges nothing. It dispatches each phase to a fresh context carrying only the issue reference and the facts that phase needs, then checks the result before the next dispatch.

Userdev-cyclecoordinatorarchitectissue-plan, issue-diagnose,code-reviewdeveloperissue-implementGitHubissue, board, PRdev-cycle #nload the issue, its board status,and every REST commentalt[closed or done]finished[ledger exists, or in progress,with no explicit resume]claimed: stop[still in Backlog]run issue-refine first,and issue-diagnose ifit needs diagnosisPhase 1: planissue-plan #n,fresh contextexplore the code;pick the smallestapproachopt[a bug that meets the RCA criteria, with no RCA yet]needs diagnosis;nothing claimedissue-diagnose #n,fresh contextpost the RCA commentopt[the RCA needs refinement]run issue-refine,once per RCAissue-plan #n againalt[approval gate: a real trade-off,or an RCA that needs evidence]decision points;nothing claimeddecision needed: stop[a clear winner]claim Ready to In progress; re-readpost the plan ledger; re-fetch; tie-breakledger link, approach,tasks, blockersPhase 2: implementissue-implement, initial mode(claim evidence, ledger REST id)opt[blocked by a design decision]blockers in the ledgerone same-cycle plan repair,re-diagnosing first if theblocker contradicts the RCAedit that ledger in placecontinue once blockers clearworktree fromorigin/<base>push the branch; open the PR(final line: Closes #n)verify the closing reference;move to In reviewPR URL, validation, ledger statePhase 3: review and mergecode-review, PR mode,round 1, fresh contextdetached worktreeat the head SHApost the reviewalt[Approve, and every merge criterion holds]squash merge, pinned to that SHADone if automation is offmerged[needs diagnosis: the plan treats the symptom]re-diagnose, then repair theledger: the cycle's single repairrevision mode, the ledger'schanged tasks as findingsfresh re-reviewrepair used or nothingchanged: PR parked[Critical or High findings]loop[at most two revision rounds]revision mode, enumerated findingsfixes pushed to the same branchfresh re-reviewof prior findingsmerge once cleancap reached or findingcontested: PR parked[another merge criterion unmet]blocker reported;PR left openreport: PR, merge orparked round, risks
Fig. 4One issue from load to report, including the diagnosis a bug may need, the approval gate, the single blocked-plan repair, and the bounded revision loop. Every phase runs in a fresh context; the review never runs where the code was written.
PhaseAgentSkillSkipped whenReturns
Diagnose, as neededarchitectissue-diagnoseNo phase reports needs diagnosisRCA link and REST id, conclusion, criteria, refinement or evidence needed
Refine, as neededproject-managerissue-refineThe issue is Ready and no RCA asks for refinementA proposal and questions, or the applied refinement and its status
1 · Planarchitectissue-planThe user explicitly asked to resume an already-planned issueLedger link, approach, task count, blockers or decisions
2 · Implementdeveloperissue-implementAn explicit resume finds an existing delivery PR, which goes straight to reviewPR URL, changed paths, ledger state, validation output, risks
3 · Reviewarchitect, in a fresh contextcode-reviewNeverAssessment, comment URL, merge or blocker, board transition, cleanup
4 · Revisedeveloper, then the architect againissue-implement, code-reviewThe review was cleanCommits, fixed and contested findings, validation output

What must hold before a merge

  • The assessment is Approve, with no Critical, High, or important pre-merge Medium finding.
  • Required checks pass on the reviewed head, and the PR is mergeable.
  • No validation result indicates production breakage.
  • Nobody asked for review only, and no auto-deploy needs manual timing.

The merge passes --match-head-commit with the reviewed SHA. If the head or base moved, the reviewer re-reviews a fresh pinned checkout instead of retrying with the new SHA.

Handoffs carry evidence, not context

Each dispatch prompt names the issue URL plus exactly what the next agent needs: claim or resume evidence and the ledger's REST id for the developer, the PR number and round for the reviewer, the review comment URL and enumerated findings for a revision, and the RCA's REST id and trigger for a re-diagnosis.

Without subagents, run one fresh session per phase, loading only that phase's skill. Never review in the session that implemented.

6Batches

Waves for delivery and grooming

burndown and backlog-refine both order their work into dependency waves. Neither restates or controls the skill it fans out to; each records results in the conversation and leaves state on the board.

Resolve scopeissue list, label, milestone, named status, else ReadyPhase 1Enumerate candidatesevery REST page; a complete board readStop and say what is missingnoenumeration complete?yesOne comment per decisionthat is not do now.Phase 2Triage every issuedo now, defer, split, blocked, duplicateRecord dependencies and write setsOrder the issues into waveswave 1 has no unmet edgesPhase 3Open the next waveonce its prerequisites have mergeddev-cycledev-cycledev-cycleRecord PR, merge result, review round,board status, and changed pathsnowaves remain?yesWidest practical validationanything merged, and a running app?yesnoPhase 4QA sweepa fresh quality-assurance agent runs qaSkip it with a notePhase 5Report
Fig. 5burndown. Issues in one wave share no dependency edge and no write set, so their cycles may interleave.
Enumerate the scopeBacklog by default; or a list, label, milestoneMap dependencies into wavesAssess the What of every itemcode reading only for feasibilityMandatory and human.Skip, defer, and closeare valid answers.Question gateone numbered list by wave, plus a go-aheadissue-diagnoseone architect worker per bug, before refining ityesbugs approved for diagnosis?noRefine the next waveissue-refineissue-refineConfirm each item reached Readynowaves remain?yesReport refined, diagnosed, skipped,deferred, and still blocked items
Fig. 6backlog-refine. One question gate up front; approval covers only the items it cleared.
burndown

Two bounds on concurrency

  • Scope, in precedence: an explicit issue list, a label query, a milestone, a board status the user names, else the Ready column.
  • Concurrency has exactly two bounds: dependency edges, and write-set overlap in files, migrations, contracts, routes, state models, or fixtures. Doubt serializes.
  • Decision points are recorded as needs-decision and asked together at the end of the wave; parked PRs block only their dependents.
  • Claimed elsewhere drops the issue and its dependents. Two or more in one wave stops the batch for a question.
  • The QA sweep is discovery, not a gate. Merged PRs are never reverted; confirmed bugs become new Backlog issues that reference the originating PR.

The coordinator's only GitHub writes are triage comments. Under GraphQL secondary rate limits it staggers board reads and prefers gh api graphql or REST verification over blocking the wave, then re-verifies unconfirmed moves once the limit resets.

backlog-refine

One gate, then waves

  • Nothing fans out before the gate, and no item is refined with an unanswered question or invented scope.
  • Only issue-refine edits a body, splits an issue, or moves it to Ready. backlog-refine writes nothing but .tmp-* bodies.
  • Each item is tracked as needs-answers, needs-diagnosis, clarified, refined to Ready, skipped, or deferred, in the conversation.
  • Bugs that need a root cause are listed at the gate. With a go-ahead, one architect worker diagnoses each before it is refined.
  • Split parents are refined before their children, which land in later waves.
  • Obsolete or duplicate items are flagged for the user, never silently dropped.

Workers that cannot hold a question gate return their questions and the items already clear; the caller asks and re-dispatches with the answers.

7Ownership

How two agents avoid one issue

Claims are optimistic. The status is set first and re-read; then the plan ledger's numeric REST comment id settles any tie that the status could not.

architect ABoard StatusIssue commentsarchitect Bread: Readyread: Readyset In progressset In progressre-read: In progressre-read: In progressNeither saw the status change under it, so both continue.POST plan ledger (REST id 101)POST plan ledger (REST id 102)re-fetch every pagere-fetch every pageThe lowest numeric REST id wins.101 is mine: keep itDELETE comment 102, its own onlyreport claimed; leave the status alone
Fig. 7A simultaneous claim. With board: none the board steps disappear and the ledger tie-break alone decides.

Reading the board

Before any status edit, read the board's totalCount, fetch exactly that many items, and require the counts to match. Match the issue by its canonical URL, never its number. Zero matches asks; several matches stop as ambiguous.

Resume and repair

A ledger is never silently resumed, however stale it looks. The one coordinator exception is a same-cycle blocked-plan repair: dev-cycle passes the ledger's REST id, its ownership evidence, and the blockers, and the architect edits that ledger under the same approval gate. A review finding that the plan treats a symptom can trigger the same single repair, after a re-diagnosis.

8Reference

Every skill at a glance

What each skill is for, which agent runs it, what it writes, and which AGENTS.md sections it reads before acting.

SkillRun byUse it toWrites
issue-raiseproject-managerFile a classified, assigned issue or a native sub-issueThe issue with its Type, labels, and assignee; sub-issue links; the board item at the new-issue status
issue-refineproject-managerSettle scope and acceptance criteriaThe issue body after approval; Ready status. No comments
backlog-refineproject-managerRefine a batch in waves after one question gateOnly .tmp-* bodies; issue-refine does the writing
issue-diagnosearchitectFind a bug's root cause before planningThe single RCA comment; nothing else
issue-planarchitectDesign the How and claim the issueIn progress status; the single plan ledger
issue-implementdeveloperTurn a ledger into one PR, or run a revision roundBranch and commits in .worktrees/; the PR; ledger check-offs; In review status
code-reviewarchitect, never the implementerReview a PR for merge, or local changes for commitThe review comment, the squash merge, Done when automation is off. Local mode only reports
dev-cyclecoordinator: the user session or burndownShip one issueNothing itself
burndowncoordinatorShip a batch, then sweep it with QATriage comments only
qaquality-assuranceTest a running app through Playwright MCPBug issues, through issue-raise
setupany sessionSet up or repair local, Docker Compose, or CI environmentsLocal configuration; never secrets
weekly-reviewproject-managerReport a week of GitHub and git activityDocs/status/YYYY-MM-DD-weekly-review.md
project-statusproject-managerGroup every not-done issue by how the items relateNothing, or Docs/status/YYYY-MM-DD-project-status.md on request
paper-docany sessionWrite a portable HTML documentThe document

What each skill reads from AGENTS.md

required   required in one mode only, noted below
SkillOverviewLayout & StackBuild & ValidationProject BoardRepositoriesEnvironmentsBranch MapAgent LoginReview Notes
issue-raiserequiredrequired
issue-refinerequiredrequiredrequiredrequired
backlog-refinerequiredrequiredrequired
issue-diagnoserequiredrequiredrequiredrequiredrequired
issue-planrequiredrequiredrequiredrequiredrequired
issue-implementrequiredrequiredrequiredrequiredrequired
code-reviewrequiredrequiredPR mode onlyPR mode onlyPR mode onlyrequired
dev-cyclerequiredrequiredrequiredrequired
burndownrequiredrequiredrequiredrequiredQA sweep onlyrequiredQA sweep only
qarequiredrequiredrequiredrequired
setuprequiredrequiredrequired
weekly-reviewrequiredrequiredrequired
project-statusrequiredrequiredrequiredrequired
paper-docReads whatever project facts the document needs, and asks when they are missing

code-review needs Project Board, Repositories, and Branch Map only in PR mode; local mode never touches the board. burndown needs Environments and Agent Login only for its QA sweep, which it skips with a note when there is no running app.

9Evidence

Sources and limits

The project lives at github.com/odytrice/metaskills. Every statement here was read from that repository at commit 22cc809, and the links below point at that commit.

  1. skills/: the fourteen SKILL.md files, plus code-review/checklist.md and output-format.md.
  2. agents/: the four agents in three dialects.
  3. commands/: the same-named wrappers.
  4. README.md: the workflow summary and core mechanics.
  5. AGENTS.template.md: the sections and conventions every consuming project provides.
  6. tests/workflow-scenarios.md: the manual scenarios that pin these behaviors.

Limits of this guide

  • It describes the instructions, not observed runs. tests/workflow-scenarios.md evaluates them by walkthrough; nothing here was executed against GitHub.
  • Status names follow the README. A consuming project's real Status options, board number, and done automation come from its own AGENTS.md.
  • This repository's own AGENTS.md documents no board, environments, or agent login, so board-dependent skills stop and ask when pointed at MetaSkills itself.
  • Figs. 1 and 3 were drawn in draw.io; the other diagrams were rendered with PlantUML 1.2024.3. Each figure's source is embedded beside it in this file, and the draw.io sources open directly in draw.io.

Google Fonts enhance the typography when online. The prose and diagrams are local to this file and work offline with fallback fonts.

↑