diff --git a/README.md b/README.md index 3e0e7a2..68308b9 100644 --- a/README.md +++ b/README.md @@ -75,14 +75,14 @@ Shared config and agent-facing docs the scaffold copies (or, for the docs, `@`-i | [`habit-hooks/java/guides/`](./presets/habit-hooks/java/guides/) | per-smell coaching for the Java sensor — concrete "fix toward this", rendered inline in-loop *and* in CI | | [`pmd/ruleset.xml`](./presets/pmd/) · `pmd/no-var.xml` | tuned Java ruleset (`ExcessiveParameterList` ≥ 8) + the no-`var` rule | | [`gitleaks.toml`](./presets/gitleaks.toml) · [`renovate.json`](./presets/renovate.json) | secret-scan allowlist starting point + the dependency-update path the "pin everything" rule needs | -| [`code-standards.md`](./presets/code-standards.md) · [`collaboration.md`](./presets/collaboration.md) · [`agent-loop.md`](./presets/agent-loop.md) | agent-facing standing docs — clean code (functions do one thing / SRP), working discipline (branch hygiene + sub-agents), and the self-correcting loop (observe → fix the cause → verify → repeat until green *and* honest) | -| [`ticket-schema.md`](./presets/ticket-schema.md) · [`ISSUE_TEMPLATE/agent-feature.yml`](./presets/ISSUE_TEMPLATE/agent-feature.yml) | the GitHub-Issue ticket the `/feature` driver works — intent, an acceptance-criteria checklist, scope, pointers. Copy the template into a consumer's `.github/ISSUE_TEMPLATE/` | +| [`code-standards.md`](./agent-docs/code-standards.md) · [`collaboration.md`](./agent-docs/collaboration.md) · [`agent-loop.md`](./agent-docs/agent-loop.md) | agent-facing standing docs — clean code (functions do one thing / SRP), working discipline (branch hygiene + sub-agents), and the self-correcting loop (observe → fix the cause → verify → repeat until green *and* honest) | +| [`ticket-schema.md`](./templates/ticket-schema.md) · [`ISSUE_TEMPLATE/agent-feature.yml`](./templates/ISSUE_TEMPLATE/agent-feature.yml) | the GitHub-Issue ticket the `/feature` driver works — intent, an acceptance-criteria checklist, scope, pointers. Copy the template into a consumer's `.github/ISSUE_TEMPLATE/` | ### From ticket to PR — the `/feature` driver Foundry answers *"when is a change done?"* — a green gate. The **`/feature`** driver is the thing in front of that — **ticket in, PR out** — the [`feature`](https://github.com/CMaintz/cmaintz-skills) skill in cmaintz-skills, specified in [designs/backlog-feature-driver.md](./designs/backlog-feature-driver.md). Foundry ships the intake it consumes (the schema + issue template above); the driver: -1. **Claim** an `agent:ready` ticket — a GitHub Issue on the [`agent-feature`](./presets/ISSUE_TEMPLATE/agent-feature.yml) form ([schema](./presets/ticket-schema.md)) — flipping it to `agent:working` (atomic, WIP = 1) in its own worktree off `origin/main`. +1. **Claim** an `agent:ready` ticket — a GitHub Issue on the [`agent-feature`](./templates/ISSUE_TEMPLATE/agent-feature.yml) form ([schema](./templates/ticket-schema.md)) — flipping it to `agent:working` (atomic, WIP = 1) in its own worktree off `origin/main`. 2. **Loop to the gate** — implement → `mise run gate` → act on the failure + habit-hooks coaching → retry, *bounded* (≤ 5 cycles; bail early on no progress, posting the stuck state to the issue thread and flipping `agent:blocked`). 3. **Verify** the result against the ticket's acceptance-criteria checklist — green ≠ correct. 4. **Hand to `/ship`** — which re-gates, runs a fresh-context review against the linked issue, commits, and opens the PR. The driver never opens a PR itself, so there's one trusted path to `main`. diff --git a/presets/agent-loop.md b/agent-docs/agent-loop.md similarity index 100% rename from presets/agent-loop.md rename to agent-docs/agent-loop.md diff --git a/presets/code-standards.md b/agent-docs/code-standards.md similarity index 100% rename from presets/code-standards.md rename to agent-docs/code-standards.md diff --git a/presets/collaboration.md b/agent-docs/collaboration.md similarity index 100% rename from presets/collaboration.md rename to agent-docs/collaboration.md diff --git a/designs/backlog-feature-driver.md b/designs/backlog-feature-driver.md index 85c71aa..61df031 100644 --- a/designs/backlog-feature-driver.md +++ b/designs/backlog-feature-driver.md @@ -53,8 +53,8 @@ preset artifacts in `foundry`. So: | Artifact | Repo | Path | |---|---|---| | The `/feature` driver skill | `cmaintz-skills` | `skills/feature/SKILL.md` (+ helpers) | -| GitHub issue template | `foundry` | `presets/ISSUE_TEMPLATE/agent-feature.yml` | -| Ticket schema (reference) | `foundry` | `presets/ticket-schema.md` | +| GitHub issue template | `foundry` | `templates/ISSUE_TEMPLATE/agent-feature.yml` | +| Ticket schema (reference) | `foundry` | `templates/ticket-schema.md` | | Inventory entry | `foundry` | `FEATURES.md` (same session) | Adding a skill is **additive** under CONTRACT versioning — no major bump. diff --git a/scripts/setup-labels.sh b/scripts/setup-labels.sh index 6d196e4..d13167c 100644 --- a/scripts/setup-labels.sh +++ b/scripts/setup-labels.sh @@ -10,7 +10,7 @@ set -euo pipefail label() { gh label create "$1" --color "$2" --description "$3" --force >/dev/null && echo " label: $1"; } -# Ticket state machine — the /feature driver and repo-align (see presets/ticket-schema.md) +# Ticket state machine — the /feature driver and repo-align (see templates/ticket-schema.md) label "agent:ready" 0e8a16 "Groomed, complete, free to claim" label "agent:working" fbca04 "Claimed and assigned (WIP=1)" label "agent:blocked" d93f0b "Escalated to a human; reason in the issue thread" diff --git a/presets/ISSUE_TEMPLATE/agent-feature.yml b/templates/ISSUE_TEMPLATE/agent-feature.yml similarity index 100% rename from presets/ISSUE_TEMPLATE/agent-feature.yml rename to templates/ISSUE_TEMPLATE/agent-feature.yml diff --git a/presets/ticket-schema.md b/templates/ticket-schema.md similarity index 100% rename from presets/ticket-schema.md rename to templates/ticket-schema.md