fix(agent-launcher): make SKILL.md path references resolvable — unblocks the G1 CI gate for every PR

The freshly merged agent-launcher plugin's six SKILL.md files referenced
scripts and references relative to the plugin root (skills/<s>/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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
This commit is contained in:
Claude 2026-08-24 18:33:48 +00:00
parent bf005356e0
commit 95459ffd2b
No known key found for this signature in database
6 changed files with 24 additions and 24 deletions

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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:0003: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

View file

@ -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:

View file

@ -18,14 +18,14 @@ and name the next 12 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 12 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).