Wave 2 of /delegate execution; both skills land together.
/wiki-ingest (.claude/skills/wiki-ingest/SKILL.md, 295 lines):
- Argument interface: <url|path> [--slug <override>] | --from-draft
<slug> [--allow-stale]; argument-hint set
- URL ingest WebFetches and writes wiki/raw/<yyyy-mm-dd>-<slug>.md;
path ingest mirrors a copy; both mkdir -p wiki/raw/ first
- --from-draft globs memory/*/wiki-drafts/<slug>.md, sorts by ISO
date in parent dir name (not mtime), excludes .skip files, errors
STALE if > 7d unless --allow-stale
- Slug derivation, body-merge, and frontmatter schema all defer to
context/rules/wiki.md (§§ 3, 7, 2 respectively)
- Daily log entry per Memory Improvement Protocol
- Orchestrator-only writes (sub-agents draft to memory/<today>/
wiki-drafts/<slug>.md and orchestrator promotes via --from-draft)
/wiki-query (.claude/skills/wiki-query/SKILL.md, 299 lines):
- Argument interface: <topic>; multi-word OR semantics
- Frontmatter-only grep using context/rules/wiki.md § 6 canonical
awk extraction; matches title/slug/tags only (NOT body)
- Empty result prints No wiki entries matched <topic> and exits 0
- Sub-cap: <3 reads all; >=3 reads top 3 by updated: descending;
cap hardcoded in v1
- Reads individual files directly (does not route via README index)
- Daily log entry per Memory Improvement Protocol
Refs #350. Wave 2 of /delegate execution. Wave 3 (US-004 /wiki-lint)
is the next dependency-unblocked story.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Strip top-level argument-hint frontmatter (portability), repin skills.lock
to merged master (commit f95011fe, checksum 02dd6324), and add the
previously-missing LICENSE for folder parity with upstream.
Closes#339
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Strip top-level argument-hint frontmatter (forbidden by skills-ref@0.1.5
portability policy; --dry-run documented in body). Harness copy now
byte-identical to the upstream contribution. Fix skills.lock checksum to
the registry folder-algorithm value (9be176e0); note references upstream
PR mifunedev/skills#5, commit backfilled on merge.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add interview and render-html to .mifune/skills.lock now that
mifunedev/skills PR #3 has merged; all 15 skills are upstream-tracked
- Sync render-html/SKILL.md from master (portable path, no hard-coded
/home/sandbox/harness prefix); restore argument-hint locally
- Add LICENSE files for interview and render-html (Mifune Dev copyright)
- Update all 15 skill checksums and commit SHA in skills.lock
- Update .mifune/README.md and CHANGELOG.md to reflect full coverage
Picks 2–4 task-specific questions via AskUserQuestion, echoes a
2–3 sentence scope brief, then proceeds. Skips trivial tasks with
an announcement. Serves as the in-tree reference pattern for
AskUserQuestion-based elicitation in future skills.
Tracks #316.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Closes#314.
Adds an on-request skill that takes an artifact (file or in-context
material) plus a one-line intent and produces a single self-contained
HTML file optimized for the moment a human reads it once to make a
decision. Writes to memory/<UTC-date>/<slug>.html (gitignored via the
existing memory/[0-9]*/ rule).
Encodes Thariq's HTML-over-Markdown thesis as a three-condition gate:
synthesis artifact + would-be-unreadable-as-Markdown + no downstream
pipeline consumer. Refuses to render source/pipeline input (PRDs,
briefings, rules, skills, commit messages, log.md itself). No
templates — each invocation produces bespoke HTML, picking widgets
per artifact (severity table, dependency SVG, collapsible evidence).
- .claude/skills/render-html/SKILL.md (new)
- AGENTS.md — Skills table row
- memory/README.md — recognized co-resident of log.md
- CHANGELOG.md — Unreleased entry
Two coupled changes:
1. .claude/skills/release/SKILL.md (Step 3 → 4):
Capture PREV_BRANCH before the promotion commit and push it back
to origin BEFORE cutting release/$VERSION. Without this, the
promotion commit lived only on release/* (and reached main via
the release-branch merge), but development never received it,
so the next round of work re-carried already-released entries
under [Unreleased] and the next /release double-promoted them.
2. CHANGELOG.md:
Repair the existing drift caused by (1). Three prior releases
(2026.5.14, 2026.5.15, 2026.5.16) had their promoted versioned
sections on main but not on development. Reset CHANGELOG.md to
main's versioned history, then re-seed [Unreleased] with only
genuinely post-2026.5.16 entries: #309 fork-friendly-install,
the /worktrees skill, and this fix itself.
Closes#297.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace the host-group-membership workaround in entrypoint.sh with a
real UID/GID sync — on boot the sandbox user's UID/GID is rewritten to
match the bind-mounted repo's owner, so anything the sandbox creates
in-container is owned by the host user on the host (no chown handoff).
Delete the 11 in-tree compose overlays (claude/codex/deepagents/opencode/
pi-host.yml, ssh.yml, ssh-generate.yml, sshd.yml, git.yml, postgres.yml,
cloudflared.yml), the /cloudflared-tunnel skill, install/cloudflared-tunnel.sh,
the SANDBOX_PASSWORD plumbing, the *_HOST_BIND_MOUNT skip-clauses in
entrypoint.sh, the git-worktree resolver block, and the host-UID
overlay-stripping block in scripts/install.sh.
config.json's composeOverrides[] stays as the extension point for
downstream packs.
Doc / skill text references to deleted things are deferred to a
follow-up PR.
Closes#283
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Removes the legacy docs/guide/ pages superseded by the new harness +
integrations sections, plus the broken README links and the orphan
.claude/ICP.md. Matches the ongoing stale-docs cleanup on this branch.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Removes nine documentation pages whose content no longer matches the
harness (`docs/onboarding.md`, `docs/sandbox-lifecycle.md`,
`docs/connecting.md`, `docs/operations/{provision,destroy,repair}.md`,
`docs/architecture/{overview,container-runtime,crons-and-heartbeats}.md`)
plus the now-orphaned `context/rules/repo-layout-source.md` rule that
pinned the architecture page as the canonical repo-tree source. The
docs site is left with `intro`, `quickstart`, `installation`, and the
`guide` / `agents` / `integrations` sections as the smaller accurate
foundation; per-directory `README.md` files plus the brief
`## Project Structure` block in `AGENTS.md` cover layout.
Closes#279
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Second-round council (5 critics × distinct lenses: faithfulness,
codebase-fit, practical-usability, safety, editor) surfaced findings
the original 3-critic pass missed. Applying.
HIGH-severity fixes:
- Faithfulness disclaimer: RAO is an RL training paper; its
quantitative gains (depth-12 generalization, 2.5x wall-clock,
context-overflow handling) require a trained policy this harness
does not have. The rule now opens with this disclaimer and
explicitly notes Max depth / Step budget are prompt-level
conventions, not runtime caps.
- launch_subagent vs Agent tool: paper's async REPL primitive runs
asyncio coroutines with shared state. Harness Agent tool is
stateless and synchronous. Rule now distinguishes them in
§ Multi-Level Delegation Protocol.
- Enforcement gate added: .claude/skills/delegate/SKILL.md Step 5
gains sub-step a.1 — before spawning a worker authorized to
recurse, confirm Max depth / Max children per level / Step budget
are ALL present. Missing → flat execution only.
- .claude/protected-paths.txt: new rule registered as load-bearing
(now cross-referenced from advisor-model.md and delegate SKILL).
MEDIUM-severity fixes:
- Branching-factor cap added: Max children per level: 5 (hard cap)
alongside Max depth, closing the depth-4 * parallel-spawn fanout
risk.
- Internal duplication cut: dropped "Recursion as Context
Expansion" section (already covered by When-to-Use triggers
+ Recursing-for-reasoning anti-pattern); dropped tautological
Step 4 in protocol; dropped duplicated "no raw content in Goal"
rule; dropped Orchestrator Boundary second paragraph;
dropped See Also entry for repo-layout-source.md (no referent
in this file).
- Ambiguous "Step 5" cross-ref tightened to
"§ 5 Execute waves sub-step (a)".
- "context capacity" trigger reframed to "child's briefing would
exceed one sub-agent's effective context window" — concrete
enough to act on.
- New anti-pattern: "Synthesis pass-through" — mid-tree node
forwards children's outputs verbatim, adds zero value.
- New anti-pattern: "Sideways scope escalation" — child rewriting
a sibling's briefing to lift depth/scope.
Net file size: 121 -> 114 lines. New content (disclaimers,
branching cap, new anti-patterns) more than offset by cuts of
duplicated and tautological text. CHANGELOG entry updated to
reflect the disclaimers and the new enforcement gate.
Closes#269 (continuing).
Adds context/rules/recursive-delegation.md — a new project rule encoding
the inference-time design principles from Recursive Agent Optimization
(arXiv 2605.06639, Gandhi et al., May 2026) that are genuinely novel
relative to existing harness conventions:
- bounding compute (Max depth, Step budget fields in briefings)
- context-as-parameter via an optional Context block
- structured-return schemas declared in Acceptance criteria
- multi-level (recursive) delegation protocol
- recursion-as-context-expansion framing
- orchestrator-vs-sandbox boundary (orchestrator-side trees default
to Max depth: 1; multi-level reserved for rule/docs/skill work,
not in-sandbox application code)
Cross-references existing rules instead of duplicating them. Principles
already covered elsewhere (fresh context per child, parallel-when-
independent, quality-over-quantity, don't-delegate-trivial) intentionally
omitted — see PR body for the council's overlap audit.
Patches:
- context/rules/advisor-model.md: new "Multi-level (recursive)" row in
Pipeline Variants table pointing at the new rule.
- .claude/skills/delegate/SKILL.md: distinct-scope rule + authorization
gate so workers stay flat unless Max depth / Step budget fields are
present in their task description.
CHANGELOG: entry under [Unreleased] / Added, per context/rules/git.md.
Closes#269
Two-tier markdown memory adapted from https://docs.openclaw.ai/concepts/memory:
long-term `memory/MEMORY.md` + daily logs at `memory/YYYY-MM-DD/log.md`.
Formalize the Memory Improvement Protocol as a canonical rule, fix path
drift across skills (workspace/memory/ -> memory/, file form -> subdir
form), and wire the read side via the AGENTS.md/CLAUDE.md session-start list.
New:
- context/rules/memory.md - canonical Memory Improvement Protocol (lifted
+ generalized from delegate/SKILL.md so any skill can reference it)
- memory/README.md - directory README per context/rules/directory-readme.md
- memory/MEMORY.md - long-term lessons stub (append-only)
- memory/x-campaign.md - relocated from memory/2026-05-04/ via git mv
(it's a tracked persistent note, not a daily log)
Edits:
- AGENTS.md - session-start list extended with MEMORY.md, today's log,
and pointer to the new rule
- .gitignore - ignore memory/[0-9]*/ daily logs; top-level memory files
remain tracked
- docs/architecture/container-runtime.md - memory/ entry in the canonical
Repo Layout tree
- .claude/skills/{delegate,harness-audit,skill-lint,strategic-proposal}
/SKILL.md - replace inlined Memory Protocol with cross-ref to the new
canonical rule; fix workspace/memory/ -> memory/; fix
memory/YYYY-MM-DD.md (file form) -> memory/YYYY-MM-DD/log.md (subdir
form) to match what the heartbeat cron and 5 existing daily dirs
already use
- CHANGELOG.md - Unreleased entry
Plan: .claude/plans/study-https-docs-openclaw-ai-concepts-m-cozy-babbage.md
Closes#259
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace project-level .claude/rules/ references in convention-teaching docs:
AGENTS.md (auto-load glob + sandbox-processes link)
.claude/agents/rule-builder.md (12 substitutions; user-level ~/.claude/rules/
and a fictional cross-team example preserved)
CLAUDE.md inherits via root-level symlink to AGENTS.md.
Add CHANGELOG [Unreleased] § Changed entry describing the relocation.
Completes the documentation scope of PR #258 — the structural move shipped
with #258's first commit but the four convention/CHANGELOG files were
modified by the delegate workers without being staged before commit.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
git mv .claude/rules context/rules. Re-symlink .claude/rules → ../context/rules
so Claude Code's auto-loader keeps working unchanged. Remove .codex/rules and
.pi/rules symlinks — neither CLI has a rules-loading feature, so they were
inert decoration. Add context/README.md and context/rules/README.md per
directory-readme.md. Update canonical layout tree at
docs/architecture/container-runtime.md and high-visibility teaching references
(AGENTS.md, CLAUDE.md, .claude/agents/rule-builder.md). ~50 other scattered
references kept as-is — the .claude/rules symlink resolves them.
Closes#257
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Stand up .pi/ as a real project workspace for the pi-coding-agent CLI:
- settings.json: OpenAI defaults (gpt-4o), model cycling list, declared resource paths
- mifune-banner extension: flush-left MIFUNE wordmark + pi harness · ryaneggz/mifune subtitle
- path-guard extension: tool_call interceptor with case-insensitive risky-bash regex,
hasUI headless guard, /dev/sd*|nvme*|hd*|disk* bare-redirection match, defensive
toolName.toLowerCase() (verified lowercase in pi source), canonical input key `path`
- APPEND_SYSTEM.md: generic, consumer-agnostic
- prompts/review.md: /review template
- skills + rules: directory symlinks to ../.claude/{skills,rules} (single source of
truth, mirrors .codex/ pattern)
- new canonical .claude/skills/harness-context/SKILL.md reachable from pi via symlink
Tests at .pi/extensions/__tests__/{path-guard,mifune-banner}.test.ts (32 + 7 cases,
hand-rolled mock ExtensionAPI, no pi devDep). vitest.config.ts include glob extended
to .pi/**/__tests__/**/*.test.ts. ci-harness.yml paths filter extended and a new
"Root tests" step runs pnpm test:scripts (also lifts cron-runtime.test.ts into CI).
86 tests passing across 6 files.
Closes#255
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the NO-RUN guidance in /ci-status with a concrete enumeration
of this repo's path-filtered workflows so future infrastructure-only
PRs (devcontainer/scripts/install/) get accurate "no CI on push, that's
expected" reporting instead of being told to check a non-existent
ci.yml.
Closes#253
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add tracked README to apps/, crons/, scripts/, tasks/, .worktrees/
documenting each directory's intent, subfolders, and lifecycle.
Codify the pattern as .claude/rules/directory-readme.md so future
directories follow it.
.gitignore now exempts only .worktrees/README.md (replacing the
unused .gitkeep exemption); .claude/rules/git.md § Worktrees
points to the new README and documents the
.worktrees/project/<project-name>/<repo>/ slot for independent
project clones (own .git, not harness branches);
docs/architecture/container-runtime.md moves .worktrees/ into
the canonical tree.
context/IDENTITY.md gains three lessons from this session:
README-over-.gitkeep for tracked-empty dirs, "treat X same as Y"
interpretation discipline, and semantic-subfolder enumeration in
directory READMEs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Step 3b: when a tunnel exists in the Cloudflare account but its
<tunnel-id>.json credentials file isn't on this host (created on a
different machine, lost, etc), reconstruct the JSON from
`cloudflared tunnel token <name>` rather than failing.
Also documents the trap that token-mode runs (`--token <T> --url <u>`)
silently drop --url because the tunnel is treated as remotely-managed
— connections register but Cloudflare returns 530.
The pipe goes direct from `cloudflared tunnel token` to `jq` to a
file; assigning to a *TOKEN-named variable would trip the
deny-env-dump.sh hook.
Closes#249
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pass 2 of stale-file cleanup, after PR #223 narrowly scoped to .openharness/.
Removed:
- .devcontainer/tests/cli-binaries.sh (no caller)
- .devcontainer/init-env.sh (documented in 2 places but never invoked;
install.sh:187-192 seeds the file directly and docker compose loads
it from .devcontainer/ by default)
- .claude/posts/{linkedin,x}.md (orphan drafts)
- tsconfig.base.json (never extended)
- .claude/plans/crispy-beaming-torvalds.md (lone plan tracked despite
the **/.claude/plans gitignore rule)
Changed:
- scripts/cron-runtime.ts:21 — log path renamed
crons/cron-runtime.log -> crons/cron.log so the daemon and per-cron
bodies share one log file. Both names were already gitignored under
crons/*.log.
- docs/architecture/container-runtime.md and .openharness/README.md —
drop init-env.sh references from tree comment and consumers list.
- CHANGELOG.md [Unreleased] — drop the now-stale "distinct from the
daemon-level cron-runtime.log" clause from the heartbeat-watchlist
entry; update scripts/cron-runtime.ts entry to point at cron.log.
Closes#228
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Implements the gist v0.6 spec's session-loaded identity layer
(https://gist.github.com/ryaneggz/8f6811efa144ac94d3cdc383846134d8
§"context/"), adapted for single-user harness scope. The v0.7
convergence (PR #212, US-013) correctly removed workspace identity
files (pack territory) but never created the canonical orchestrator
context/ folder.
Four files at repo root:
- context/SOUL.md (voice and disposition, ~30 lines)
- context/IDENTITY.md (operating principles + append-only lessons
learned, ~60 lines)
- context/TOOLS.md (environment inventory, ~40 lines)
- context/USER.md (working-relationship patterns, living document,
~45 lines)
Plus:
- AGENTS.md gains a "Session start" section instructing the
orchestrator to read context/*.md at session start
- .claude/protected-paths.txt extended with the four context/ entries
so future cleanup passes don't delete them
The IDENTITY.md lessons-learned section captures the meta-principles
this session produced — revealed preference > stated preference,
critic-gate before destructive actions, short feedback loops over
speculative infrastructure — that would otherwise vanish when the
conversation ends.
USER.md is the most session-bridging file: encodes communication
style, decision style, authorization patterns, and cleanup
expectations inferred from this session's interaction. Marked as a
living document that the agent proposes updates to after sessions
that produce new patterns.
Closes#220.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the per-invocation usage-logging proposal (#217, closed) after
Critic B's proportionality argument: zero runtime overhead, works on
day 1, ~20 LOC vs. an 8-story PRD with hooks.
Three file changes:
1. .claude/protected-paths.txt — list of load-bearing skills, scripts,
and config paths. Includes the 10 current orchestrator skills, key
scripts, install/runtime files wired into Dockerfile or boot, crons,
rules, specs, and sub-agents.
2. .claude/agents/critic.md — appended a "Protected paths — deletion
gate" section. Critics must check the list before proposing any
deletion; protected entries require an explicit override note;
violations raise SEVERITY: high with [PROTECTED-PATH] tag.
3. .claude/skills/ship-spec/SKILL.md — two changes:
a. Stage 4 critic prompts (now stage 3 after reorder) reference the
protected-paths list directly; both implementer and user lens
include the protected-path check as criterion 6.
b. Stages 3 and 5 reordered. Critics now run BEFORE the GH issue is
opened. Earlier ordering created dangling issues when critics
halted (surfaced during dogfood on #217). New order: prd → critics
→ resolve → issue → ralph → scaffold → branch → push → draft PR.
Halt conditions and idempotency tables updated to match.
The v0.7 convergence (PR #212, US-012) deleted six load-bearing skills
under "defensible 5-skill set" rationale. The protected-paths list is
the gate that would have caught it.
Closes#218.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Composes existing primitives (/prd → 2 critics → /ralph → gh issue
→ branch → draft PR) into one durable invocation.
The critic gate (stage 5) is the entire point: it makes critics the
short feedback loop that the v0.7 convergence (PR #212) was missing.
PR #212 deleted six load-bearing skills under "defensible 5-skill set"
rationale; that mistake took two weeks to surface. /ship-spec halts
on any high-severity critic finding before the issue is opened or
anything is pushed — the cheapest thing to revise is the spec itself.
v1 stops at draft PR creation. Loop launch + CI verification stay
manual until the critic phase has been proven valuable across 2-3
real runs. Idempotent at every stage.
Closes#215.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Risk Assessment (critic gate):
- High/Low: accidental deletion of the active entrypoint; mitigation: only removed legacy install-side scripts, preserved .devcontainer/entrypoint.sh, and verified Dockerfile COPY plus docker compose config.
- Medium/High: stale docs or skills could point agents at deleted files; mitigation: updated harness-audit, container-runtime docs, AGENTS, install-prereq notes, cloudflared references, changelog, and task docs.
- Medium/Medium: external/manual workflows could still invoke removed helpers; mitigation: retained supported banner/cloudflared assets and documented system-package or INSTALL_CLOUDFLARED=true install path.
- High/Low-Medium: missed active caller outside normal grep scope; mitigation: ran tracked grep for legacy setup/install-entrypoint paths and checked tmux wrapper references before deletion.
Critic invocation note: Claude Task tool was unavailable in this pi API harness; the critic prompt was executed read-only via codex exec before deletion using .claude/agents/critic.md's rubric. No high-severity finding lacked a mitigation.
Validation:
- docker compose -f .devcontainer/docker-compose.yml config
- pnpm run lint
- pnpm -r --if-present run typecheck
- pnpm run test
Restored from fb71365^ unchanged:
- /ralph (PRD → prd.json converter for scripts/ralph.sh)
- /prd (PRD generator from feature description)
- /harness-audit (4 parallel sub-agents: PM/Implementer/Critic/Explorer)
- /skill-lint (skill staleness scorer, 5 dimensions)
- /delegate (parallel sub-agent execution coordinator)
- /strategic-proposal (5-expert council + Critic for roadmap)
US-012 deleted these on the rationale "workspace-agent skills, not
orchestrator." That triage was wrong: the orchestrator actively uses
the prd.json schema for its own task management
(tasks/openharness-v07-convergence/prd.json), so removing the tools
that generate that schema was a regression. scripts/ralph.sh (the
runner) was kept all along — only the wrapper skills were lost.
CLAUDE.md skills table updated to list all 10 surviving skills.
CHANGELOG entry under [Unreleased] ### Fixed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
US-014 (memory directory-per-day) and US-015 (archive
install-prereq-detection) followed v0.6's schema where completed Ralph
tasks landed in memory/YYYY-MM-DD/tasks/<taskdesc>/. That created two
directories both literally named 'tasks/' with different semantics
(active at root, archived inside daily memory) — confusing for both
agents and humans.
Single namespace fix: tasks always live under tasks/. Active in
tasks/<taskdesc>/, archived in tasks/archive/<YYYY-MM-DD>/<taskdesc>/.
memory/ keeps log.md/decisions.md/artifacts/ only — no tasks/
subfolder. Matches the convention already documented in
.claude/skills/ralph/SKILL.md (§ Archiving Previous Runs).
Changes:
- Move memory/2026-05-02/tasks/install-prereq-detection/ →
tasks/archive/2026-05-02/install-prereq-detection/
- Remove now-empty memory/ tree (will be re-created on demand by
daily journaling, never with a tasks/ subfolder)
- Update SPEC v0.7 §'Weekly cleanup cron' to specify the new path
and explicitly supersede v0.6's location with a brief rationale
- Update crons/cleanup-tasks.md body to mv to tasks/archive/$TODAY/
and add a 'skipping tasks/archive/' guard so the sweep doesn't
re-archive its own output
Tracks: #210
Drop six skills (delegate, harness-audit, strategic-proposal, skill-lint,
prd, ralph), convert provision/destroy/repair to docs/operations/, keep
release/ci-status/cloudflared-tunnel/agent-browser. Delete stale
heartbeat/daemon/worktree-discovery docs and patch incidental refs to
point at the croner runtime + crons/. Pack-side counterparts tracked in
ryaneggz/mifune#1 and #2. Per SPEC v0.7 §"Orchestrator vs workspace agent
skills".
Refs #210
Delete the still-draft blog/2026-04-29-worktree-per-agent.md and move
blog/2026-04-28-byoh.md into blog/archive/ with archived: true and a
top-of-post note that the v1 framing differs. Add .claude/ICP.md with
primary persona, three JTBDs, top-3 needs, and an explicit anti-ICP
table (not multi-tenant SaaS, not non-developers, not production agent
operators, not comparison-shopping tinkerers). Strip the residual
"side-by-side" wording from docs/agents/overview.md so the grep gate
clears outside blog/archive/. Per SPEC v0.7 + the v07-convergence PRD.
Refs #210