Shared agent instructions, skills, and small portable helpers for Peter's local workspaces.
This repo is the canonical place for:
AGENTS.MD: shared hard rules for Codex/Claude-style agentsskills/: reusable workflow skills, including repo-owned skills exposed by symlinkscripts/: dependency-light helpers used across projectshooks/: local guardrails such as skill validation
Skills are the main routing layer. Each skills/<name>/SKILL.md has YAML front matter:
---
name: skill-name
description: "Short generic trigger phrase."
---Rules:
- Keep descriptions short and generic; optimize for routing, not documentation.
- Keep skill bodies terse and operational.
- Prefer helper scripts under
skills/<name>/scripts/when a workflow has repeatable commands. - Validate after edits:
scripts/validate-skills. - Quote
descriptionin front matter.
Global discovery is built by scripts/sync-skills (idempotent; run on every Mac after cloning or adding skills):
- Codex scans nested dirs, so it gets whole-root links:
~/.codex/skills/agent-scripts -> ~/Projects/agent-scripts/skills,~/.codex/skills/manager -> ~/Projects/manager/skills. - Claude Code loads only
~/.claude/skills/<name>/SKILL.md(exactly one level deep; per-entry symlinks are followed, category subfolders are not scanned — verified on 2.1.197). It gets a flat per-skill link mirror covering both repos plus machine-local~/.codex/skills/<name>extras. - Name collisions resolve agent-scripts > manager > codex-local; the script prints skipped duplicates and prunes broken/stale managed links.
- Real destination files and directories are preserved. A real Claude skill directory with a Codex backlink to that same directory satisfies local ownership; other real destination conflicts are reported and make sync fail.
For the specific legacy topology ~/.claude/skills/NAME/NAME -> ~/.codex/skills/NAME -> ~/.claude/skills/NAME, invoke the sync owner directly with an explicit allowlist:
/absolute/path/to/agent-scripts/scripts/sync-skills --repair-nested-self-links --dry-run -- boxd-cli boxd-setup-deploy/absolute/path/to/agent-scripts/scripts/sync-skills --repair-nested-self-links -- boxd-cli boxd-setup-deployThis mode validates every candidate before unlinking only the extra nested leaves. It preserves the real skill directories, assets, and valid Codex backlinks, and exits before creating roots, building mirrors, pruning, or touching instruction pointers. Names must start with an ASCII letter or digit and contain only letters, digits, ., _, or -; duplicates, missing names, and unknown arguments are rejected. A missing nested leaf is a no-op only with the expected surrounding topology. Redirected/inaccessible roots, unexpected objects or literal targets, and changed directory/link identities cause refusal. Rechecks before each unlink are not atomic concurrency protection; a later error stops the batch and reports removals already completed, without rollback.
The read-only skills/fleet-maintenance/scripts/agent-skill-links-audit.sh reports same-name nested ancestor loops as reason=nested-self-link. This is narrow detection, not an exhaustive graph validator. Its --repair remains a broad sync through ~/Projects/agent-scripts/scripts/sync-skills; it is not the scoped repair above. Run scripts/test-sync-skills for isolated fixture coverage; scripts/test-sync-skills --recurrence-only /absolute/path/to/old-sync-skills runs the unchanged recurrence assertion against an original helper.
Shared personal skills live as real folders in skills/. Public OpenClaw shared skills live in ../agent-skills and are exposed here with tracked relative symlinks. Repo-owned skills stay canonical in their repo and are exposed here the same way, for example:
skills/autoreview -> ../../agent-skills/skills/autoreview
skills/discrawl -> ../../discrawl/.agents/skills/discrawl
Current symlinked repo-owned skills include birdclaw, discrawl, gog, imsg, slacrawl, wacli, and wacrawl.
Shared hard rules live in AGENTS.MD.
Global setup (also maintained by scripts/sync-skills; Claude Code reads CLAUDE.md only, so it links to the shared AGENTS.MD):
~/.codex/AGENTS.md -> ~/Projects/agent-scripts/AGENTS.MD~/.claude/CLAUDE.md -> ~/Projects/agent-scripts/AGENTS.MD~/.claude/AGENTS.md -> ~/Projects/agent-scripts/AGENTS.MD
Downstream repos should use a pointer-style AGENTS.MD:
READ ~/Projects/agent-scripts/AGENTS.MD BEFORE ANYTHING (skip if missing).
Repo-specific rules go below that pointer. Do not copy the shared blocks into downstream repos.
scripts/sync-skills
- Builds the per-machine skill mirror: Codex whole-root links, Claude flat per-skill links, shared
AGENTS.MDpointers. - Idempotent; prints changes only, prunes broken/stale managed links, never clobbers real files.
- No arguments runs ordinary sync;
--helpprints usage. Only the scoped--repair-nested-self-linksmode accepts--dry-run.
scripts/validate-skills
- Checks every
skills/*/SKILL.md. - Verifies YAML front matter plus required
nameanddescription. - Enable as a local hook with
git config core.hooksPath hooks.
scripts/docs-list.ts
- Walks
docs/. - Enforces
summaryandread_whenfront matter. - Prints onboarding summaries for repos that wire it in.
scripts/browser-tools.ts
- Standalone Chrome DevTools helper.
- Common commands:
start --profile,nav <url>,eval '<js>',screenshot,console,network,search --content "<query>",content <url>,inspect,kill --all --force. - Build optional binary with
bun build scripts/browser-tools.ts --compile --target bun --outfile bin/browser-tools.
Treat this repo as canonical for shared agent rules and portable helper scripts.
When syncing downstream repos:
- Pull latest here first.
- Ensure each target repo starts with the pointer-style
AGENTS.MD. - Preserve repo-local rules below the pointer.
- Copy helper changes both directions only when the helper is meant to stay byte-identical.
- Keep scripts dependency-free and portable; no repo-specific imports or path aliases.
For submodules, repeat the pointer check inside each subrepo, push those changes, then bump submodule SHAs in the parent repo.