Initialize AGENTS.md
Set up AI agent documentation and machine-readable config for this project.
Architecture: AGENTS.md (human guidance) + .agents.yml (machine config) + CLAUDE.md (symlink)
Step 1: Generate AGENTS.md
Check existing state first: !${CLAUDE_PLUGIN_ROOT}/skills/init/scripts/check-existing.sh
If AGENTS.md exists, ask: Regenerate | Enhance | Skip
Then invoke the hierarchical agents skill:
Skill(skill: "hierarchical-agents")
Complete all 4 phases: Repository Analysis → Root AGENTS.md → Sub-folder files → Special Considerations
For AGENTS.md best practices, see resources/agents-md-template.md in the init-agents-config skill.
Step 2: Gather Configuration
Use AskUserQuestion to gather config. Ask in batches of max 4 questions.
Core Questions (All Users)
| Question | Options |
|---|---|
| Tech Stack | Rails, Python, Node, Generic |
| App Status | Development, Production |
| Task Management | GitHub Issues, Linear, Beads, File-based |
| Workflow | Worktrees, Branches |
| Experience Level | Expert (Recommended), Senior, Intermediate, Beginner |
Experience level definitions:
- Beginner: New to the technology, needs detailed explanations
- Intermediate: Comfortable with basics, learning advanced patterns
- Senior: Deep knowledge, focus on edge cases and best practices
- Expert: Authoritative, skip explanations, just show the code
Multi-stack projects (e.g., Rails + React detected): Ask per-stack experience level instead of single level.
Stack-Specific Questions
Rails (auto-detect ruby/rails versions first):
| Question | Options |
|---|---|
| Database | SQLite, PostgreSQL, MySQL |
| Frontend | Hotwire, Inertia, API-only |
| CSS | Tailwind, Bootstrap, None |
| JavaScript | Importmap, esbuild, Vite |
| Deployment (multi) | Kamal, Fly.io, Heroku, Render |
| Solid Gems (multi) | Solid Cache, Solid Queue, Solid Cable |
Python (auto-detect python version, framework):
| Question | Options |
|---|---|
| Framework | FastAPI, Django, Flask, None |
| Package Manager | uv, Poetry, pip |
| Database | PostgreSQL, SQLite, None |
Node (auto-detect node version, typescript, framework):
| Question | Options |
|---|---|
| Framework | Next.js, React, Vue/Nuxt, Express/Fastify |
| Package Manager | pnpm, npm, yarn, bun |
| TypeScript | Yes, No |
| Styling | Tailwind, CSS Modules, Styled Components, Sass |
| Testing | Vitest, Jest, Playwright, Cypress |
| Deployment | Vercel, Cloudflare, Netlify, Railway |
Final Questions (All Users)
| Question | Options |
|---|---|
| Branch Naming | feature/desc, issue-desc, type/issue-desc, user/desc |
| Track in Git | Yes (shared), No (local-only) |
| Local Overrides | Yes (if tracked), No |
| Browser | Chrome, Brave, Edge, Skip |
Step 3: Auto-Detect Values
Run these operations in parallel:
- Default branch: !
${CLAUDE_PLUGIN_ROOT}/skills/init/scripts/detect-branch.sh - Tech stack: !
${CLAUDE_PLUGIN_ROOT}/skills/init/scripts/detect-tech-stack.sh stack - Design system:
Glob: "**/design-system.md"
If design system found, record path in toolbox config.
Step 4: Write .agents.yml
Load the init-agents-config skill:
Skill(skill: "init-agents-config")
Select template by tech_stack from resources/:
rails.yaml|python.yaml|node.yaml|generic.yaml
Replace placeholders with collected values. Handle conditionals:
- Only include
extrasif user selected Solid gems - Only include
toolbox.build_task.design_system_pathif detected - Only uncomment
browser.typeif Brave or Edge selected
Gitignore + Local Config
If not tracking in git: !${CLAUDE_PLUGIN_ROOT}/skills/init/scripts/gitignore-add.sh .agents.yml
If local overrides requested: !${CLAUDE_PLUGIN_ROOT}/skills/init/scripts/gitignore-add.sh .agents.local.yml
If local overrides requested, write .agents.local.yml using template from resources/local-config-template.yaml.
Step 5: Finalize Setup
- Create symlink -
ln -s AGENTS.md CLAUDE.md(backup if exists) - Verify - Run verification: !
${CLAUDE_PLUGIN_ROOT}/skills/init/scripts/verify-setup.sh
Output Summary
Report what was created:
- AGENTS.md structure (line count, sub-folders)
- .agents.yml (key settings)
- Design system status (detected path or suggest Skill("ux-brief"))
- Symlink and local config status