frkak/mymir/composer
Claude Code and agent skill by frkak/mymir
- community
Checking that the SKILL.md file is still in the repository.
Use when the user types /piyaz:composer, /piyaz:composer <taskRef>, or /piyaz:composer rework <taskRef|pr-url>, or asks to run the next Piyaz task end-to-end, ship the backlog, compose through the ready queue, or loop through Piyaz tasks until done. Composer researches, refines, plans, implements, reviews, and fixes each task in a loop until the PR is ready, and merges and continues when the user authorizes it. Do NOT invoke for one-off task lookups, status checks, hand-refinement of one task, or interactive planning of a single task; those flows belong to the piyaz skill and composer adds latency without adding quality.
Install
npx vskill@latest install frkak/mymir/composerSKILL.md
Composer
Composer is a Piyaz task orchestrator. Per iteration it picks the next ready task off the project's critical path, runs that task through a deterministic per-task workflow (research, plan, implement, CI gate, review, bounded fix loop), surfaces the verdict, merges when the user authorized it, propagates the result through the graph, and continues until a structural stop condition holds.
The orchestrator (this skill, running in the main loop) owns only the interactive seams: pick the task, resolve gates, run the merge gate, propagate. The token-heavy phase sequencing runs inside the workflow, off the orchestrator's context, dispatching the phase agents in fresh windows with per-phase model and effort. This is the design's main token discipline: orchestration is JavaScript, not main-loop reasoning over a transcript that grows with every phase.
Composer is glue. The heavy lifting (task selection, refinement, the Completion Protocol, propagation) lives in the piyaz skill (skills/piyaz/SKILL.md); composer reuses those flows rather than duplicating them.
Invocation
- `/piyaz:composer`: backlog mode. Pick the highest-value ready task each iteration; continue until a stop condition holds.
- `/piyaz:composer <taskRef>`: single-task mode. Same pipeline applied to one task; exits after the iteration completes.
- `/piyaz:composer rework <taskRef|pr-url>`: rework mode. HOTL requested changes on GitHub instead of merging; composer rounds that feedback back through the fix loop.
- `/piyaz:composer --pipelined`: backlog mode with research-ahead (latency-only, costs tokens). Off by default; see Pipelined research-ahead.
No argument means backlog mode; rework plus an argument means rework mode; anything else is single-task.
Piyaz operating context
The canonical piyaz rules load with this skill. Downstream citations (conventions §1, artifacts §3, lifecycle §3) refer to this loaded text.
@skills/piyaz/references/conventions.md @skills/piyaz/references/artifacts.md @skills/piyaz/references/lifecycle.md @skills/piyaz/references/resilience.md
The per-task workflow
Each iteration's task runs through skills/composer/workflows/compose-task.js, launched with the Workflow tool:
If ${CLAUDE_PLUGIN_ROOT} does not resolve in the tool argument, substitute the absolute path of this plugin's root. The workflow runs in the background; the orchestrator is suspended until it returns, so it spends no context tokens while phases run.
The workflow dispatches the phase agents by agentType, each with explicit model/effort/schema, the implementer with isolation:'worktree'. It runs research+plan → implement → ci-gate → review → [fix-loop ≤2 rotations], with a fixed-interval CI poll (60s, bounded) and a CI-pending re-poll path that re-reviews without burning a fix rotation, then returns one structured result. It does not merge, propagate, or touch edges; those are the orchestrator's seams. The phase contracts live in the agent files; do not duplicate them here.
| Phase | agentType | Writes to Piyaz | Workflow captures | |
|---|---|---|---|---|
| 1+2. Research+Plan (merged) | piyaz:composer-researcher under an orchestrator authority grant | refinement fields (description, acceptanceCriteria, tags, category, priority, estimate, decisions) plus implementationPlan; status='planned' on draft → planned only | brief, status, gatePhase, flags, confidence, refined estimate/work-type, proposed rewrites, section/step counts, open questions | |
| 3. Implement | piyaz:composer-implementer | status='in_progress' (claim), status='in_review' (+ Completion Protocol); fix mode rotates in_review → in_progress → in_review | status, PR URL, AC counts, concerns | |
| CI gate | generic (haiku) | nothing | green / red / pending / none, failing checks | |
| 4. Review | piyaz:review (dispatched with a verdict schema) | nothing (read-only) | verdict, blocking findings |
The workflow result
The workflow returns exactly one of three shapes. Branch on result.status, not on prose:
status | Meaning | Orchestrator reaction | |
|---|---|---|---|
DONE | Task ran to in_review (or planned for a plannable-only pick) | Surface the verdict, run the Merge gate, propagate | |
NEEDS_DECISION | The merged research+plan phase gated; result.gate carries the trigger and result.phase names the raising half (research or plan) | Resolve via Gates, then relaunch the workflow with the answer | |
BLOCKED | A phase could not complete; result.phase and result.reason say which and why | Failure handling |
A DONE result also carries: outcome (in_review|planned), verdict, prUrl, ciState, acSatisfied/acTotal, rotations, escalated (true when a block verdict or an exhausted fix budget left findings unaddressed), blockingFindings, concerns. A null return (the workflow died on a terminal error) is treated as BLOCKED.
Session bootstrap
Once per session, before the first iteration:
- Resolve the project.
piyaz_workspace action='projects'and note the identifier; pass it (or a taskRef) on every call — there is no server-side selection. Single-task mode: alsopiyaz_search query='<taskRef>'to confirm the task and its current status. - Read meta.
piyaz_get view='meta'. Keep the categories and tag vocabulary for the workflow's research args; drop the status counts. - Stale-claim sweep.
piyaz_search project='<identifier>' status=['in_progress']for tasks already claimed. Surface possible stale claims from dead sessions in the first pick rationale. - Set the merge policy. Ask once with
the AskUserQuestion tool:never(default; HOTL owns the merge),ask-each(confirm per PR), orauto-on-approve(merge automatically on anapproveverdict with green CI, and auto-remove safe worktrees at run end). Record the choice; it holds for the whole run. WhenAskUserQuestionis unavailable (headless), default tonever. - Init the run log.
mkdir -p .piyazand guard the gitignore (grep -qxF '.piyaz/' .gitignore 2>/dev/null || printf '\n.piyaz/\n' >> .gitignore). If.piyaz/composer-<projectIdentifier>.mdexists and ends withRUN_END, archive it to.piyaz/archive/composer-<projectIdentifier>-<date>.mdand start fresh; if it exists without aRUN_END, that is a resume signal — see Recovering after compaction first. When the unfinished log'sRUN_START mode=differs from this invocation, appendRUN_END reason=superseded-by-<mode>, archive, and start fresh. Then appendRUN_START mode=<...> mergePolicy=<...> project=<identifier>.
Then start iterating. There is nothing to install and nothing to confirm beyond the merge policy.
The loop
At the start of each iteration, materialize these todos and mark them off (the todo list is your compaction anchor): pick, launch workflow, handle result, surface verdict, merge gate, propagate.
Step details
- Pick. Backlog:
piyaz_map view='ready'∩view='critical_path'; rank by priority (urgent > core > normal > backlog), tie-break by lowest estimate. Fall back to the highest-priorityreadytask when the intersection is empty, then topiyaz_map view='plannable'whenreadyis empty (plannable picks route through research + plan only; mark the pick plannable-only). Single-task: the named task; ifdoneorcancelled, report and stop; if already claimed, see Failure handling (jump to the in-flight phase, never restart). Emit a one-paragraph pick rationale (taskRef, priority, estimate, critical-path yes/no, one-sentence reason). Do not wait for approval; the user interrupts if they disagree.
- Gather pick facts and launch. Build the workflow
argsfrom the pick and bootstrap:taskRef,taskId(the UUID, carried for cross-referencing; refs are first-class in tool calls — conventions §4),projectId,categories,tagVocabulary,pickEstimate,pickPriority,workTypeandtags(from the task row),mode,plannableOnly. WritePICKthenWORKFLOW task=<ref> runId=<id>to the run log, then launch the workflow and await the result.
- Handle the result.
NEEDS_DECISION→ Gates.BLOCKED/null → Failure handling.DONEwithoutcome=planned(plannable-only) → end the iteration (TASK_END outcome=planned); backlog returns to the pick, single-task reports and stops.DONEwithoutcome=in_review→ step 4.
- Surface + merge + propagate. Quote the final verdict block verbatim (
VERDICTto the run log). Run the Merge gate. Then propagate per lifecycle §3:piyaz_map view='neighbors' task='<taskRef>',piyaz_map view='downstream' task='<taskRef>'; update or retire edge notes the work invalidated (edge-note shape: artifacts §3). Propagation depth: full when the PR was merged or the verdict wasapprove; otherwise provisional, each note prefixedProvisional pending HOTL on PR #<n>:. Surface newly-unblocked tasks in the next pick rationale. WritePROPAGATED, thenTASK_END outcome=in_review rotations=<n>.
- Loop. Single-task: report the outcome and stop. Backlog: next iteration, no pause.
Gates
A NEEDS_DECISION result means the merged research+plan phase needs a user decision before the task can proceed. result.phase names the raising half (research or plan, from the agent's gatePhase) and result.gate carries the trigger. Resolve with the AskUserQuestion tool, then relaunch the workflow:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 93 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/claude-code/skills/composer/SKILL.md
Popularity
- Repository stars
- 179
- Repository forks
- 18
- 7-day trend score
- 26
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/frkak/mymir/composer)