From 95459ffd2b50bbb438ef864b2a3171ae5b5ac14e Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 24 Aug 2026 18:33:48 +0000 Subject: [PATCH] =?UTF-8?q?fix(agent-launcher):=20make=20SKILL.md=20path?= =?UTF-8?q?=20references=20resolvable=20=E2=80=94=20unblocks=20the=20G1=20?= =?UTF-8?q?CI=20gate=20for=20every=20PR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The freshly merged agent-launcher plugin's six SKILL.md files referenced scripts and references relative to the plugin root (skills//scripts/x.py, references/x.md), which resolves from none of the path linter's bases — so check_paths.py --all fails on dev with 24 findings, and G1 is a blocking gate on every future PR. Script commands now use repo-relative paths and reference labels use the skill-dir-relative ../../references/ form that the existing markdown link targets already used. 0 unresolvable after the fix. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4 --- .../skills/agent-launcher-orchestrator/SKILL.md | 8 ++++---- agent-launcher/skills/grade-iterate/SKILL.md | 10 +++++----- agent-launcher/skills/interview/SKILL.md | 10 +++++----- agent-launcher/skills/run-without-you/SKILL.md | 8 ++++---- agent-launcher/skills/stage-launch/SKILL.md | 6 +++--- agent-launcher/skills/wrap-up/SKILL.md | 6 +++--- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/agent-launcher/skills/agent-launcher-orchestrator/SKILL.md b/agent-launcher/skills/agent-launcher-orchestrator/SKILL.md index 0c71277b..726fb8af 100644 --- a/agent-launcher/skills/agent-launcher-orchestrator/SKILL.md +++ b/agent-launcher/skills/agent-launcher-orchestrator/SKILL.md @@ -17,7 +17,7 @@ a workflow**. Heavy intake stays in the forked context; the parent gets a digest Inspired by Anthropic's `launch-your-agent` reference skill (Apache-2.0). This is an independent re-implementation; CMA semantics come from -[`references/cma-primitives.md`](../../references/cma-primitives.md). +[`../../references/cma-primitives.md`](../../references/cma-primitives.md). ## The through-line: the session goal @@ -31,7 +31,7 @@ the phase + recurrence selects the loop shape. Run the router, then act on its exit code: ```bash -python3 skills/agent-launcher-orchestrator/scripts/goal_router.py --out-dir ./my-agent +python3 agent-launcher/skills/agent-launcher-orchestrator/scripts/goal_router.py --out-dir ./my-agent # exit 0 ROUTE -> fork to the named phase sub-skill # exit 3 ASK -> ask the one printed forcing question, then re-route # exit 4 REFUSE -> goal too vague; get one sentence, then re-route @@ -48,13 +48,13 @@ python3 skills/agent-launcher-orchestrator/scripts/goal_router.py --out-dir ./my ## Compile the loop ```bash -python3 skills/agent-launcher-orchestrator/scripts/loop_compiler.py \ +python3 agent-launcher/skills/agent-launcher-orchestrator/scripts/loop_compiler.py \ --out-dir ./my-agent --max-iterations 5 --cron "0 9 * * *" --timezone Europe/Berlin --nest-outcome ``` `loop_compiler.py` emits `plan.v1`: `single-pass`, `grade-iterate` (always with a `max_iterations` cap 1..20), or `cron-loop` (optionally nesting a self-grading -outcome per firing). See [`references/loops-and-workflows.md`](../../references/loops-and-workflows.md). +outcome per firing). See [`../../references/loops-and-workflows.md`](../../references/loops-and-workflows.md). ## Pre-flight gates (hard refusals) diff --git a/agent-launcher/skills/grade-iterate/SKILL.md b/agent-launcher/skills/grade-iterate/SKILL.md index a8c79f64..e899aa9a 100644 --- a/agent-launcher/skills/grade-iterate/SKILL.md +++ b/agent-launcher/skills/grade-iterate/SKILL.md @@ -14,15 +14,15 @@ This is the plugin's **loop**: CMA's `outcome` primitive self-grades the agent's work in an isolated context and feeds failing verdicts back for the next attempt. It is **always bounded** by `max_iterations` (1..20) — never "improve forever". -See [`references/loops-and-workflows.md`](../../references/loops-and-workflows.md) +See [`../../references/loops-and-workflows.md`](../../references/loops-and-workflows.md) and the outcome section of -[`references/cma-primitives.md`](../../references/cma-primitives.md). +[`../../references/cma-primitives.md`](../../references/cma-primitives.md). ## Workflow 1. **Define the outcome.** ```bash - python3 skills/grade-iterate/scripts/outcome_builder.py \ + python3 agent-launcher/skills/grade-iterate/scripts/outcome_builder.py \ --sheet ./my-agent/build-sheet.json --max-iterations 5 \ --out ./my-agent/payloads/outcome.json ``` @@ -30,7 +30,7 @@ and the outcome section of payload as a `user.define_outcome` event (append to the running session). 2. **Read every verdict first.** ```bash - python3 skills/grade-iterate/scripts/verdict_reader.py --result ./my-agent/last-verdict.json + python3 agent-launcher/skills/grade-iterate/scripts/verdict_reader.py --result ./my-agent/last-verdict.json ``` Tables the rubric outcome and recommends: **SHIP** (`satisfied`), **SHARPEN** then re-run (`needs_revision`), **ESCALATE** (`max_iterations_reached` / @@ -40,7 +40,7 @@ and the outcome section of run halts at the cap and escalates. Don't burn the budget on cosmetic edits. 4. **Once a version passes, run held-back eval.** ```bash - python3 skills/grade-iterate/scripts/eval_scaffold.py \ + python3 agent-launcher/skills/grade-iterate/scripts/eval_scaffold.py \ --sheet ./my-agent/build-sheet.json --out ./my-agent/eval.json --concurrency 5 ``` Held-back cases (never seen during iteration) run in parallel, capped at the diff --git a/agent-launcher/skills/interview/SKILL.md b/agent-launcher/skills/interview/SKILL.md index a0742861..f88cd71d 100644 --- a/agent-launcher/skills/interview/SKILL.md +++ b/agent-launcher/skills/interview/SKILL.md @@ -11,7 +11,7 @@ compatible_tools: [claude-code, codex-cli, cursor, antigravity, opencode, gemini # Phase 1 — Interview → Plan Open warmly with one or two examples from -[`references/examples-bank.md`](../../references/examples-bank.md), then interview +[`../../references/examples-bank.md`](../../references/examples-bank.md), then interview the founder into a **build sheet**. No API key needed in this phase — the output is a plan. @@ -26,7 +26,7 @@ is a plan. | **Done** | "How would you grade a good run?" | outcome `rubric` (required) | | **Recurrence** | "Once, on request, or on a cadence?" | single-pass / grade-loop / cron-loop | -See [`references/interview-to-config.md`](../../references/interview-to-config.md) +See [`../../references/interview-to-config.md`](../../references/interview-to-config.md) for the full mapping. ## Workflow @@ -35,7 +35,7 @@ for the full mapping. invent specifics they didn't claim. 2. **Map to primitives.** ```bash - python3 skills/interview/scripts/interview_planner.py \ + python3 agent-launcher/skills/interview/scripts/interview_planner.py \ --job "Triage overnight support email" --trigger schedule \ --inputs "gmail,memory" --actions "label,reply" \ --dod "one label per email, grounded reason, no invented facts" \ @@ -46,11 +46,11 @@ for the full mapping. deferrals** behind `always_ask`. 3. **Assemble the sheet.** ```bash - python3 skills/interview/scripts/build_sheet_builder.py --plan ./my-agent/plan.json --out-dir ./my-agent + python3 agent-launcher/skills/interview/scripts/build_sheet_builder.py --plan ./my-agent/plan.json --out-dir ./my-agent ``` 4. **Validate limits.** ```bash - python3 skills/interview/scripts/primitives_validator.py --sheet ./my-agent/build-sheet.json + python3 agent-launcher/skills/interview/scripts/primitives_validator.py --sheet ./my-agent/build-sheet.json ``` FAIL blocks progress; fix and re-run. WARN is advisory (surface it). 5. **Record the plan in the goal.** `goal_state.py set --phase stage-launch diff --git a/agent-launcher/skills/run-without-you/SKILL.md b/agent-launcher/skills/run-without-you/SKILL.md index 145c74f0..89e4ad5e 100644 --- a/agent-launcher/skills/run-without-you/SKILL.md +++ b/agent-launcher/skills/run-without-you/SKILL.md @@ -14,7 +14,7 @@ A **scheduled deployment** fires a fresh session on a cron cadence — the agent runs without you. Each firing can carry its own outcome, nesting the bounded grade→iterate loop inside every recurring run. -See [`references/loops-and-workflows.md`](../../references/loops-and-workflows.md). +See [`../../references/loops-and-workflows.md`](../../references/loops-and-workflows.md). ## Choose the trigger @@ -28,14 +28,14 @@ See [`references/loops-and-workflows.md`](../../references/loops-and-workflows.m 1. **Validate the schedule.** ```bash - python3 skills/run-without-you/scripts/cron_validator.py --cron "0 9 * * *" --timezone Europe/Berlin + python3 agent-launcher/skills/run-without-you/scripts/cron_validator.py --cron "0 9 * * *" --timezone Europe/Berlin ``` Invalid cron/timezone → exit 1. Read the **DST note**: wall-clock semantics mean spring-forward times are skipped and fall-back times fire twice — avoid 02:00–03:00 in DST zones if exactly-once matters. 2. **Build the deployment payload.** ```bash - python3 skills/run-without-you/scripts/deployment_builder.py \ + python3 agent-launcher/skills/run-without-you/scripts/deployment_builder.py \ --sheet ./my-agent/build-sheet.json --agent-id agent_123 --env-id env_456 \ --nest-outcome --out ./my-agent/payloads/deployment.json ``` @@ -46,7 +46,7 @@ See [`references/loops-and-workflows.md`](../../references/loops-and-workflows.m leave the cron in place. Pin the agent version in the deployment once it passes. 4. **Finalize the roadmap.** ```bash - python3 skills/run-without-you/scripts/next_directions_writer.py \ + python3 agent-launcher/skills/run-without-you/scripts/next_directions_writer.py \ --sheet ./my-agent/build-sheet.json --loop-shape cron-loop --last-verdict satisfied --out-dir ./my-agent ``` 5. **Advance + hand to wrap-up.** `goal_state.py set --phase wrap-up`, then invoke diff --git a/agent-launcher/skills/stage-launch/SKILL.md b/agent-launcher/skills/stage-launch/SKILL.md index 8e8501d6..13d285fe 100644 --- a/agent-launcher/skills/stage-launch/SKILL.md +++ b/agent-launcher/skills/stage-launch/SKILL.md @@ -18,7 +18,7 @@ their own key. **No script here touches the network or the key** — the user ru 1. **Generate payloads.** ```bash - python3 skills/stage-launch/scripts/payload_generator.py \ + python3 agent-launcher/skills/stage-launch/scripts/payload_generator.py \ --sheet ./my-agent/build-sheet.json --out-dir ./my-agent # -> ./my-agent/payloads/{01-environment,02-agent,03-session,04-kickoff}.json ``` @@ -26,14 +26,14 @@ their own key. **No script here touches the network or the key** — the user ru the agent payload's `permission_policies`). 2. **Write the launch script.** ```bash - python3 skills/stage-launch/scripts/launch_script_writer.py --out-dir ./my-agent + python3 agent-launcher/skills/stage-launch/scripts/launch_script_writer.py --out-dir ./my-agent ``` `launch.sh` creates environment → agent → session → kickoff **in order**, chaining IDs, and **resumes** on re-run (each step skips if its `*.id` file exists). It reads `$ANTHROPIC_API_KEY` at runtime. 3. **Validate before launch.** ```bash - python3 skills/stage-launch/scripts/payload_validator.py --dir ./my-agent + python3 agent-launcher/skills/stage-launch/scripts/payload_validator.py --dir ./my-agent ``` FAIL blocks — especially a `key_leak` finding. Fix and re-run. 4. **Minimal key step (never in chat).** Check the shell first: diff --git a/agent-launcher/skills/wrap-up/SKILL.md b/agent-launcher/skills/wrap-up/SKILL.md index 700b922c..5887c77d 100644 --- a/agent-launcher/skills/wrap-up/SKILL.md +++ b/agent-launcher/skills/wrap-up/SKILL.md @@ -18,14 +18,14 @@ and name the next 1–2 upgrades so the founder leaves with a clear roadmap. The 1. **Inventory what they own.** ```bash - python3 skills/wrap-up/scripts/primitives_inventory.py \ + python3 agent-launcher/skills/wrap-up/scripts/primitives_inventory.py \ --sheet ./my-agent/build-sheet.json --goal ./my-agent/goal.json ``` Tables agent / environment / session / memory / outcome / deployment and the phases completed. 2. **Regenerate the overview page.** ```bash - python3 skills/wrap-up/scripts/overview_page.py \ + python3 agent-launcher/skills/wrap-up/scripts/overview_page.py \ --sheet ./my-agent/build-sheet.json --out-dir ./my-agent \ --status live --loop-shape cron-loop --last-verdict satisfied ``` @@ -33,7 +33,7 @@ and name the next 1–2 upgrades so the founder leaves with a clear roadmap. The assets) — shareable as-is. 3. **Suggest the next moves.** ```bash - python3 skills/wrap-up/scripts/upgrade_suggester.py --sheet ./my-agent/build-sheet.json --top 2 + python3 agent-launcher/skills/wrap-up/scripts/upgrade_suggester.py --sheet ./my-agent/build-sheet.json --top 2 ``` Ranks recorded deferrals (v1 before v2, real-integration first) plus standing hardening (tighten networking, pin the agent version, nest an outcome).