| name | meta-init |
| description | Use when installing tao-research-skills into a machine's global AI agent configuration. Symlinks every skill into Claude Code and Codex, injects a SessionStart git-pull hook for auto-updates, bootstraps memory, and appends workflow rules. Triggers: "install skills", "install to computer level", "setup skills globally", "meta-init", "cross-platform skills install", "bootstrap skills" |
Meta Init
Install this skills repo into the global configuration of supported AI agent platforms so every skill is available in every project on the machine.
When to Use
- Setting up tao-research-skills on a new machine
- Adding support for a new AI agent platform
- Re-running after a platform was added or reinstalled
- Verifying the installation is intact (dry-run mode)
Workflow (when invoked)
Follow these steps exactly, in order.
1. Confirm repo location
Run pwd. If cwd is not the tao-research-skills root, ask the user to confirm the repo path, or pass --repo <path> to the script.
2. Dry-run preview
python meta-init/scripts/meta_init.py --dry-run
Parse the JSON report. Summarize to the user, per platform:
- symlinks โ how many
would_create vs. already_linked vs. skipped:*
- hook โ
would_create or already_exists (Claude Code only)
- memory โ which files would be created
- workflow_rules โ
would_create or already_exists
If any skipped:different_target appears, stop and ask the user โ an existing symlink points elsewhere; overwriting would clobber it.
3. Apply
python meta-init/scripts/meta_init.py
The script is idempotent โ safe to re-run.
4. Verify symlinks
ls -la ~/.claude/skills/ | grep tao-research-skills
ls -la ~/.agents/skills/ 2>/dev/null | head -5
Every skill directory from the repo should appear as a symlink pointing back into the repo (one symlink per skill, not a single repo-level link).
5. Verify the SessionStart hook
jq '.hooks.SessionStart' ~/.claude/settings.json
Expected output contains a command referencing tao-research-skills, with "async": true. This is the auto-update hook โ git pull runs non-blocking on every session start.
6. Report
Print the JSON report from step 3, plus a one-line confirmation per step.
What Gets Installed
| Step | Claude Code | Codex |
|---|
| Symlink per skill | ~/.claude/skills/<skill> โ repo skill dir | ~/.agents/skills/<skill> โ repo skill dir |
| Auto-update | SessionStart hook in ~/.claude/settings.json | Instruction in ~/.agents/AGENTS.md |
| Memory bootstrap | MEMORY.md + README.md in auto-memory dir | โ |
| Workflow rules | Appended to ~/.claude/CLAUDE.md | Appended to ~/.agents/AGENTS.md |
All operations are idempotent โ safe to run multiple times.
The SessionStart Hook
The script writes this into ~/.claude/settings.json:
{
"hooks": {
"SessionStart": [{
"hooks": [{
"command": "git -C <repo-path> pull --quiet origin main 2>/dev/null || true",
"type": "command",
"async": true,
"statusMessage": "Updating tao-research-skills..."
}]
}]
}
}
async: true โ doesn't block session startup
|| true โ network failures are silently swallowed
- Detected via
tao-research-skills marker in the command; re-running the script won't duplicate
- If the user already added a different
tao-research-skills pull hook manually, the script detects it via the marker and skips (already_exists)
Script Flags
python meta-init/scripts/meta_init.py [options]
--dry-run Preview without applying
--platforms LIST Comma-separated subset (default: claude-code,codex)
--skip-hooks Skip hook + workflow-rule injection
--skip-memory Skip memory bootstrap
--repo PATH Override repo root (default: auto-detect)
Adding a New Platform
Add to the PLATFORMS dict in meta_init.py:
PLATFORMS = {
"claude-code": Path.home() / ".claude" / "skills",
"codex": Path.home() / ".agents" / "skills",
"cursor": Path.home() / ".cursor" / "skills",
}
Then add platform-specific hook injection if the platform supports it.
Post-Install Guidance
After the script finishes:
- Restart Claude Code (or open
/hooks) โ the SessionStart hook only takes effect after the settings watcher reloads
- Scan the repo โ read
README.md and a sample of SKILL.md files to understand the skills collection
- Populate memory โ create files in the auto-memory directory with project overview, skill inventory, and known issues
- Audit CLAUDE.md โ check if the project's
CLAUDE.md is up to date with current repo state
Anti-Patterns
- Running
--skip-hooks and forgetting manual updates โ skills silently go stale
- Editing the symlink target instead of
git pull in the repo โ symlinks point to the repo, not a copy
- Running from outside the tao-research-skills repo without
--repo โ script auto-detects via script location, but ambiguity is safer avoided
- Skipping the dry-run โ destructive target conflicts (
skipped:different_target) are reported but not blocked
- Running on a repo that isn't tao-research-skills โ the script assumes this repo's layout; pointing it elsewhere will create bogus symlinks
See Also
project-mem-init โ Bootstrap project memory files in a target repo (different purpose: target repo memory, not global install)
memory-sync โ Keep AGENTS.md and CLAUDE.md in sync from one canonical source
claude-code-config โ Claude Code permissions, statusline, plugins setup