ワンクリックで
nav-init
// Initialize Navigator documentation structure in a project. Auto-invokes when user says "Initialize Navigator", "Set up Navigator", "Create Navigator structure", or "Bootstrap Navigator".
// Initialize Navigator documentation structure in a project. Auto-invokes when user says "Initialize Navigator", "Set up Navigator", "Create Navigator structure", or "Bootstrap Navigator".
Manage Navigator task documentation - create implementation plans, archive completed tasks, update task index. Use when user starts new feature, completes work, or says "document this feature".
Validate and release Navigator plugin to marketplace. Auto-invoke when user says "release plugin", "publish navigator", "create release", or "deploy new version".
Sync project CLAUDE.md to the installed Navigator version, preserving customizations. Use when user says "sync CLAUDE.md", "update CLAUDE.md", or when detecting outdated Navigator configuration.
Query project knowledge graph. Search across tasks, SOPs, memories, and concepts. Use when user asks "what do we know about X?", "show everything related to X", or "remember this pattern/pitfall/decision".
Load Navigator documentation navigator when starting development session, resuming work, or beginning new feature. Use when user mentions starting work, beginning session, resuming after break, or checking project status.
Automates Navigator plugin updates. Detects current version, updates plugin, verifies installation, updates project CLAUDE.md, and validates new features. Auto-invoke when user mentions upgrading Navigator or getting new features.
| name | nav-init |
| description | Initialize Navigator documentation structure in a project. Auto-invokes when user says "Initialize Navigator", "Set up Navigator", "Create Navigator structure", or "Bootstrap Navigator". |
| allowed-tools | Write, Bash, Read, Glob |
| version | 1.0.0 |
| triggers | ["initialize navigator","init navigator","set up navigator","setup navigator","create navigator structure","bootstrap navigator","start navigator project"] |
Creates the Navigator documentation structure (.agent/) in a new project, copies templates, and sets up initial configuration.
.agent/ directory structure:
.agent/
├── DEVELOPMENT-README.md
├── .nav-config.json
├── tasks/
├── system/
├── sops/
│ ├── integrations/
│ ├── debugging/
│ ├── development/
│ └── deployment/
└── grafana/
├── docker-compose.yml
├── prometheus.yml
├── grafana-datasource.yml
├── grafana-dashboards.yml
├── navigator-dashboard.json
└── README.md
if [ -d ".agent" ]; then
echo "✅ Navigator already initialized in this project"
echo ""
echo "To start a session: 'Start my Navigator session'"
echo "To view documentation: Read .agent/DEVELOPMENT-README.md"
exit 0
fi
Read package.json, pyproject.toml, go.mod, Cargo.toml, or similar to extract:
Fallback: Use current directory name if no config found.
Use Write tool to create:
.agent/
.agent/tasks/
.agent/system/
.agent/sops/integrations/
.agent/sops/debugging/
.agent/sops/development/
.agent/sops/deployment/
.agent/grafana/
Copy from plugin's templates/ directory to .agent/:
DEVELOPMENT-README.md:
${PROJECT_NAME} with detected project name${TECH_STACK} with detected stack${DATE} with current date.nav-config.json:
{
"version": "5.5.0",
"project_name": "${PROJECT_NAME}",
"tech_stack": "${TECH_STACK}",
"project_management": "none",
"task_prefix": "TASK",
"team_chat": "none",
"auto_load_navigator": true,
"compact_strategy": "conservative",
"auto_update": {
"enabled": true,
"check_interval_hours": 1
}
}
Grafana Setup: Copy all Grafana dashboard files to enable metrics visualization:
# Find plugin installation directory
PLUGIN_DIR="${HOME}/.claude/plugins/marketplaces/navigator-marketplace"
# Copy Grafana files if plugin has them
if [ -d "${PLUGIN_DIR}/.agent/grafana" ]; then
cp -r "${PLUGIN_DIR}/.agent/grafana/"* .agent/grafana/
echo "✓ Grafana dashboard installed"
else
echo "⚠️ Grafana files not found in plugin"
fi
Files copied:
If CLAUDE.md exists:
If CLAUDE.md doesn't exist:
templates/CLAUDE.md to project rootNavigator's lifecycle hooks ship with the plugin manifest (.claude-plugin/plugin.json's top-level hooks field) starting v6.13.0+. They are not merged into the project's .claude/settings.json — Claude Code only substitutes ${CLAUDE_PLUGIN_DIR} for hooks declared in a plugin manifest, so merging them into user settings (the prior approach) produced broken commands like /hooks/X.py.
The plugin registers the following hooks automatically when the plugin is installed:
Nothing for nav-init to do here. The skill no longer writes to .claude/settings.json for hooks.
⚠️ RESTART REQUIRED to activate hooks after plugin install/update.
Claude Code caches plugin manifest hooks at session start.
Opt-out: Users can disable any hook via .agent/.nav-config.json:
{
"session_start_hook": { "enabled": false },
"compact_hook": { "enabled": false },
"workflow_state_hook": { "enabled": false },
"task_graph_sync_hook": { "enabled": false },
"profile_sync_hook": { "enabled": false },
"workflow_enforcer_hook":{ "enabled": false }
}
(The hooks themselves read this config and short-circuit when disabled, so no settings.json mutation is needed.)
Add to .gitignore if not present:
# Navigator context markers
.context-markers/
# Navigator temporary files
.agent/.nav-temp/
✅ Navigator Initialized Successfully!
Created structure:
📁 .agent/ Navigator documentation
📁 .agent/tasks/ Implementation plans
📁 .agent/system/ Architecture docs
📁 .agent/sops/ Standard procedures
📁 .agent/grafana/ Metrics dashboard
📄 .agent/.nav-config.json Configuration
📄 CLAUDE.md Updated with Navigator workflow
Next steps:
1. Start session: "Start my Navigator session"
2. Optional: Enable metrics - see .agent/sops/integrations/opentelemetry-setup.md
3. Optional: Launch Grafana - cd .agent/grafana && docker compose up -d
Token monitoring is active - you'll be warned when approaching context limits.
Documentation: Read .agent/DEVELOPMENT-README.md
If .agent/ exists:
If templates not found:
If no write permissions:
project_detector.pydef detect_project_info(cwd: str) -> dict:
"""
Detect project name and tech stack from config files.
Checks (in order):
1. package.json (Node.js)
2. pyproject.toml (Python)
3. go.mod (Go)
4. Cargo.toml (Rust)
5. composer.json (PHP)
6. Gemfile (Ruby)
Returns:
{
"name": "project-name",
"tech_stack": "Next.js, TypeScript, Prisma",
"detected_from": "package.json"
}
"""
template_customizer.pydef customize_template(template_content: str, project_info: dict) -> str:
"""
Replace placeholders in template with project-specific values.
Placeholders:
- ${PROJECT_NAME}
- ${TECH_STACK}
- ${DATE}
- ${YEAR}
Returns customized template content.
"""
settings_merger.pydef merge(target_path: Path, fragment: dict) -> dict:
"""
Idempotent JSON merge for .claude/settings.json.
- If target doesn't exist: create from fragment.
- If target exists: deep-merge `hooks` arrays by event name; dedupe entries
by command string. Preserves user-defined hooks and other top-level keys.
- Refuses to clobber invalid JSON (exits 2).
"""
Status (v6.13.0+): Retained as general-purpose JSON merger for non-hook
keys (permissions, mcpServers, etc.) that downstream skills may want to
preserve. Navigator no longer passes a hooks fragment through it — hooks now
ship with the plugin manifest (.claude-plugin/plugin.json). The hook-merging
code path is dead-for-Navigator but kept intact for safety (existing call
sites that already pass non-hook fragments continue to work).
User says: "Initialize Navigator in this project"
Skill detects:
package.json existsResult:
.agent/ createdUser says: "Set up Navigator"
Skill detects:
pyproject.toml existsResult:
.agent/ createdUser says: "Initialize Navigator"
Skill checks:
.agent/ directory existsResult:
✅ Navigator already initialized in this project
To start a session: 'Start my Navigator session'
nav-start skill:
.agent/DEVELOPMENT-README.mdnav-task skill:
.agent/tasks/nav-sop skill:
.agent/sops//nav:init command from v2.x