4 Commits

Author SHA1 Message Date
Vincent b75b7f351b fix: prepare complete issues and enforce delivery gates (#149)
* fix: unify execution-ready issue preparation

* fix: require prepared issues and explicit dispatch roles

* fix: provision prepared workflow skills with dispatch setup

* fix: gate prepared delivery on independent review and CI

* chore: record reviewed delivery adaptations

* fix: align legacy loops with prepared delivery contract

* fix: preserve dispatch claim ownership and validate runtime trust

* fix: synchronize reviewed workflow adapters and provenance

* fix: reject hidden plan input and isolate planner credentials
2026-09-14 14:55:42 +02:00
Vincent 869fec26e8 fix(skills): resolve GitHub review feedback (#29)
Address actionable review comments from unread shipshitdev/skills GitHub notifications.

- quote skill metadata and neutralize PRD wording

- add release safety guards and dev-loop setup validation

- pin dispatch workflow actions and disable checkout credential persistence
2026-06-18 10:32:57 +02:00
Vincent 93b5ca4e84 feat(dev-loop): board-driven autonomous dev loop — 5-column board, AI-loop phase labels, Claude/Codex/OpenRouter lanes, dev-loop bundle (#28)
Supersedes the earlier #25 dev-loop. Board-as-truth status (Backlog/In Progress/Human Review/Done/Deferred), loop:* phase labels, three engine lanes (dispatch:claude/codex/openrouter), auto-assign on Human Review, dedicated dev-loop bundle, ShipCode-aligned. Coherence-audited; README catalog reconciled.
2026-06-16 22:45:50 +02:00
Vincent d3a57884ee feat(dev-loop): two-engine autonomous dev loop (Claude + Codex), issue-as-source-of-truth planning (#25)
* feat(dev-loop): add ready-for-agent dispatch + setup-agent-routing skill

Human-gated autonomous execution for the AI dev loop, in two phases that share
one dispatch contract: an issue runs only when a human applies `ready-for-agent`
(opt-in) and it sits in `status:todo`.

- setup-agent-routing: new skill that writes an `## Agent skills` routing block
  + docs/agents/ so the dev-loop skills (executing-plans, feature-intake,
  writing-prds, qa-reviewer) know a consumer repo's tracker, label vocabulary,
  and domain layout. Adapted port of setup-matt-pocock-skills.
- commands/loop.md: Phase 1 local pull loop (/loop, --status, --list) wrapping
  executing-plans. One invocation = one task, never a daemon.
- .github/workflows/agent-dispatch.yml: Phase 2 push dispatch on the
  `ready-for-agent` label. OAuth-token-only auth (never ANTHROPIC_API_KEY),
  per-issue concurrency, least-privilege permissions, untrusted issue body.
- executing-plans: candidate query now requires ready-for-agent + status:todo;
  completion strips the gate; QA reject re-arms it (status:todo + ready-for-agent).
- .github/actionlint.yaml: register the Blacksmith runner label (also clears the
  pre-existing false positive on generate-bundles.yml).
- Regenerate bundles + marketplace.json (session bundle 6 -> 7 skills).

* feat(dev-loop): add Codex/GPT lane + model-as-variable + setup script

Extend the ready-for-agent loop into a two-engine design:

- New codex-dispatch.yml: ready-for-codex gate routes to openai/codex-action@v1
  (sandbox: workspace-write, safety-strategy: drop-sudo). The executing-plans
  contract is inlined into the prompt since codex-action has no plugin-loading
  equivalent; Codex auto-reads AGENTS.md/.codex. At most one gate per issue.
- Model selection is now a repo VARIABLE, not hardcoded or secret. Claude lane:
  claude_args --model vars.AGENT_MODEL (fallback sonnet-4-6). Codex lane:
  vars.CODEX_MODEL / vars.CODEX_EFFORT. Only auth tokens stay secret.
- scripts/setup-dev-loop.sh: one-shot per-repo provisioning — seeds labels
  (incl. ready-for-codex), installs both workflows, arms CLAUDE_CODE_OAUTH_TOKEN
  + OPENAI_API_KEY, prints the gh variable set commands. --dry-run/--skip flags.
- Docs: AI-DEV-LOOP.md two-lane rewrite + planner/executor/QA role table;
  setup-agent-routing SKILL + triage-labels seed gain the ready-for-codex gate;
  commands/loop.md notes /loop is the Claude lane (Codex is push-only).

Verified: validate, shellcheck, markdownlint, actionlint all green.

* feat(skills): store implementation plans as issue comments, not local docs/plans files

writing-plans (ported from obra/superpowers) was saving the plan to a local
docs/plans/YYYY-MM-DD-<feature>.md file. That file desyncs from the project the
moment work starts and never crosses to CI, so the cross-engine "Claude plans ->
Codex executes" handoff silently failed on the plan path.

Now the plan is posted as a `## Implementation Plan` comment on the work/PRD
issue, mirroring how writing-prds stores the PRD in the issue body. A comment
co-locates plan + PRD on one issue while keeping the PRD body clean (feature-intake
forbids plans in the body). The executor and both dispatch lanes already read the
issue body, linked PRD, and ALL comments, so the plan reaches CI for either engine
with no executor/workflow/label change — the handoff gap closes for free.

- writing-plans: "Saving the Plan" -> "Storing the Plan" (gh issue comment
  --body-file -); killed the docs/plans default; confirm-before-post; no-tracker
  fallback; >65k-char split note; label-driven Execution Handoff; version 1.0.0 -> 1.1.0
- writing-plans/README: recorded the storage divergence so future upstream syncs preserve it
- executing-plans: the `## Implementation Plan` comment is the authoritative plan
- AI-DEV-LOOP: both planning artifacts live on the issue (PRD=body, plan=comment)
- writing-prds: "plan the X PRD" flow points at the plan comment
- regenerated planning + session bundles
2026-06-16 12:52:29 +02:00