Agent skill

Nav Init

by qf-studio in qf-studio/navigator

Initialize Navigator documentation structure in a project. An agent skill from qf-studio/navigator.

MITAuto-check: notesAgent Workflows

Install Nav Init

skills CLI
$ npx skills add qf-studio/navigator --skill nav-init -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install qf-studio/navigator nav-init --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/qf-studio/navigator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/nav-init .claude/skills/nav-init && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
nav-init
GitHub stars
355
Token cost
~3k tokens
SKILL.md length
738 words
Files
5
Skills in repo
32
Repo updated
First seen
Licence
MIT

At a glance

Initialize Navigator documentation structure in a project. An agent skill from qf-studio/navigator.

  • Works in 8 steps: Check if Already Initialized → Detect Project Information → Create Directory Structure → …
  • Says Initialize Navigator
  • SKILL.md covers Purpose, When This Skill Auto-Invokes, What This Skill Does and Execution Steps, plus 6 more sections
  • Runs Python scripts from its folder; calls claude and docker

What it does

Nav Init is an agent skill from qf-studio/navigator. Initialize Navigator documentation structure in a project. Auto-invokes when user says "Initialize Navigator", "Set up Navigator", "Create Navigator structure", or "Bootstrap Navigator".

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files (for example `functions/project_detector.py`, `functions/settings_merger.py` and `functions/template_customizer.py`).

It sits in Agent Workflows, covering Monitoring and alerting. It works with Grafana and Prometheus. The repository describes itself as: Finish What You Start — Context engineering for Claude Code. Sessions last 20+ exchanges instead of crashing at 7. The licence is MIT.

When your agent uses it

  • Says Initialize Navigator
  • Set up Navigator
  • Create Navigator structure
  • Bootstrap Navigator

Example prompts

  • “Initialize Navigator”
  • “Set up Navigator”
  • “Create Navigator structure”
  • “/nav-init”

Requirements

  • Python 3
  • Node.js
  • Docker
  • Pre-approved tools (allowed-tools): Write, Bash, Read, Glob

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Check if Already Initialized
  2. Detect Project Information
  3. Create Directory Structure
  4. Copy Templates
  5. Update Project CLAUDE.md
  6. Claude Code Hooks (Plugin Manifest)
  7. Create .gitignore Entries
  8. Success Message

What it can do on your machine

Read from SKILL.md and the folder at commit 3bb9eac. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Write
    • Bash
    • Read
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • claude
    • docker

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use docker, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Nav Init loads about 3k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 738 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~49
When it runs · the whole SKILL.md, loaded when a task matches
~3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Write, Bash, Read, Glob

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from qf-studio/navigator at commit 3bb9eac, republished under its MIT licence (© qf-studio). 738 words, ~3,018 tokens.

Download SKILL.mdSave it as .claude/skills/nav-init/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
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

Navigator Initialization Skill

Purpose

Creates the Navigator documentation structure (.agent/) in a new project, copies templates, and sets up initial configuration.

When This Skill Auto-Invokes

  • "Initialize Navigator in this project"
  • "Set up Navigator documentation structure"
  • "Create .agent folder for Navigator"
  • "Bootstrap Navigator for my project"

What This Skill Does

  1. Checks if already initialized: Prevents overwriting existing structure
  2. Creates .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
  3. Copies templates: DEVELOPMENT-README.md, config, Grafana setup
  4. Auto-detects project info: Name, tech stack (from package.json if available)
  5. Updates CLAUDE.md: Adds Navigator-specific instructions to project
  6. Creates .gitignore entries: Excludes temporary Navigator files

Execution Steps

1. Check if Already Initialized
bash
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
2. Detect Project Information

Read package.json, pyproject.toml, go.mod, Cargo.toml, or similar to extract:

  • Project name
  • Tech stack
  • Dependencies

Fallback: Use current directory name if no config found.

3. Create Directory Structure

Use Write tool to create:

.agent/
.agent/tasks/
.agent/system/
.agent/sops/integrations/
.agent/sops/debugging/
.agent/sops/development/
.agent/sops/deployment/
.agent/grafana/
4. Copy Templates

Copy from plugin's templates/ directory to .agent/:

DEVELOPMENT-README.md:

  • Replace ${PROJECT_NAME} with detected project name
  • Replace ${TECH_STACK} with detected stack
  • Replace ${DATE} with current date

.nav-config.json:

json
{
  "version": "5.5.0",
  "project_name": "${PROJECT_NAME}",
  "tech_stack": "${TECH_STACK}",
  "project_management": "none",
  "task_prefix": "TASK",
  "task_id_source": "local",
  "team_chat": "none",
  "auto_load_navigator": true,
  "compact_strategy": "conservative",
  "auto_update": {
    "enabled": true,
    "check_interval_hours": 1,
    "curl_fallback": false
  }
}

Grafana Setup: Copy all Grafana dashboard files to enable metrics visualization:

bash
# Find plugin installation directory
PLUGIN_DIR="${CLAUDE_PLUGIN_ROOT:-$(cat "${NAVIGATOR_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}/navigator}/plugin-root" 2>/dev/null)}"
[ -d "$PLUGIN_DIR/skills" ] || 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:

  • docker-compose.yml (Grafana + Prometheus stack)
  • prometheus.yml (scrape config for Claude Code metrics)
  • grafana-datasource.yml (Prometheus datasource config)
  • grafana-dashboards.yml (dashboard provider config)
  • navigator-dashboard.json (10-panel Navigator metrics dashboard)
  • README.md (setup instructions)
5. Update Project CLAUDE.md

If CLAUDE.md exists:

  • Append Navigator-specific sections
  • Keep existing project customizations

If CLAUDE.md doesn't exist:

  • Copy templates/CLAUDE.md to project root
  • Customize with project info
6. Claude Code Hooks (Plugin Manifest)

Navigator'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_ROOT} 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:

  1. SessionStart — injects Navigator context (navigator + active marker + config + graph + profile) into the session, eliminating ~6 Read tool calls at start (v6.9.0+)
  2. PreCompact — writes a context marker before manual or silent auto-compact (v6.10.0+)
  3. PostCompact — appends Claude Code's compact summary to the marker (v6.10.0+)
  4. Stop — silent workflow-state writer; records whether WORKFLOW CHECK / NAVIGATOR_STATUS appeared (v6.11.0+)
  5. UserPromptSubmit — prompt_gate + prompt_brief ops (Loop/Task mode trigger detection + optional strict_block gate; intent-brief injection)
  6. PreToolUse(Read) — read_guard op (bulk-read circuit breaker)
  7. PostToolUse(Edit|Write|Bash) — token monitor (warns at 70% / 85% context usage)
  8. PostToolUse(Edit|Write) — task→graph sync and profile correction sync (v6.11.0+)

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:

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.)

Show full SKILL.md (301 more words)Show less
7. Create .gitignore Entries

Add each of these lines to .gitignore unless it is already present (check line by line — re-running nav-init must not duplicate entries):

# Navigator context markers
.context-markers/

# Navigator temporary files
.agent/.nav-temp/

# Navigator hook-runtime session state (regenerated every turn, never shared)
.agent/.nav-runtime-state.json
.agent/.nav-runtime-state.lock

# Navigator reject log (one line per refusal; local diagnostics, TASK-88)
.agent/.nav-rejects.jsonl

# Navigator personal config override (per contributor, see nav-features --local)
.agent/.nav-config.local.json

# Navigator onboarding state (per person; lives under ~/.config/navigator since v7.8)
.agent/onboarding/

Idempotent append, one command:

bash
for line in ".context-markers/" ".agent/.nav-temp/" \
            ".agent/.nav-runtime-state.json" ".agent/.nav-runtime-state.lock" \
            ".agent/.nav-rejects.jsonl" \
            ".agent/.nav-config.local.json" ".agent/onboarding/"; do
  grep -qxF "$line" .gitignore 2>/dev/null || echo "$line" >> .gitignore
done
8. Success Message
✅ 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

Error Handling

If .agent/ exists:

  • Don't overwrite
  • Show message: "Already initialized"

If templates not found:

  • Error: "Navigator plugin templates missing. Reinstall plugin."

If no write permissions:

  • Error: "Cannot create .agent/ directory. Check permissions."

Predefined Functions

project_detector.py
python
def 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.py
python
def 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.py
python
def 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).

Examples

Example 1: New Next.js Project

User says: "Initialize Navigator in this project"

Skill detects:

  • package.json exists
  • Name: "my-saas-app"
  • Dependencies: next, typescript, prisma

Result:

  • .agent/ created
  • DEVELOPMENT-README.md shows: "Project: My SaaS App"
  • DEVELOPMENT-README.md shows: "Tech Stack: Next.js, TypeScript, Prisma"
  • .nav-config.json has project_name: "my-saas-app"
Example 2: Python Project

User says: "Set up Navigator"

Skill detects:

  • pyproject.toml exists
  • Name: "ml-pipeline"
  • Dependencies: fastapi, pydantic, sqlalchemy

Result:

  • .agent/ created
  • Tech stack: "FastAPI, Pydantic, SQLAlchemy"
Example 3: Already Initialized

User says: "Initialize Navigator"

Skill checks:

  • .agent/ directory exists

Result:

✅ Navigator already initialized in this project

To start a session: 'Start my Navigator session'

Integration with Other Skills

nav-start skill:

  • Checks for .agent/DEVELOPMENT-README.md
  • If missing, suggests: "Initialize Navigator first"

nav-task skill:

  • Creates tasks in .agent/tasks/
  • Requires initialization

nav-sop skill:

  • Creates SOPs in .agent/sops/
  • Requires initialization

Version History

  • 1.0.0 (2025-01-20): Initial implementation
    • Auto-detection of project info
    • Template customization
    • Grafana setup included
    • Error handling for existing installations

Notes

  • This skill replaces the deleted /nav:init command from v2.x
  • Templates are copied from plugin installation directory
  • Project info detection is best-effort (falls back to directory name)
  • Safe to run multiple times (won't overwrite existing structure)

© qf-studio, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files in skills/nav-init of qf-studio/navigator.

  • SKILL.md
  • functions/project_detector.py
  • functions/settings_merger.py
  • functions/template_customizer.py
  • functions/test_settings_merger.py

Open the folder on GitHubat commit 3bb9eac

Compare with similar skills

Nav Init next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Nav Init compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Nav Init this skillqf-studio/navigator355—~3kAutomated safety check: NotesMIT
Syncmetapawurb/hotpath-rs1.9k—~1.2kAutomated safety check: NotesMIT
Optimize Slurm TopologyNVlabs/alpasim1.3k—~1.6kAutomated safety check: PassApache-2.0
Dashboard Previewm4r1k/Eneru149—~1.4kAutomated safety check: PassMIT
Graftm4r1k/Eneru1491 repos~2.3kAutomated safety check: PassMIT
Release Reviewm4r1k/Eneru149—~1.9kAutomated safety check: PassMIT

Similar skills

  • Syncmeta

    pawurb/hotpath-rs

    Sync changes from the hotpath, hotpath-macros and hotpath-drain crates to their meta counterparts (hotpath-meta, hotpath-macros-meta and hotpath-drain-meta).

    1.9k GitHub stars~1.2k tokensUpdated yesterday
    DevOps & CloudAuto-check: notes
  • Optimize AlpaSim Slurm topology throughput using persistent local Prometheus/Grafana telemetry and run artifacts.

    1.3k GitHub stars~1.6k tokensUpdated 21 days ago
    DevOps & CloudAuto-check passed
  • Visually verify Eneru browser-dashboard changes against a live daemon or audit an exact deployment.

    149 GitHub stars~1.4k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Graft

    m4r1k/Eneru

    This repo is indexed by graft/. An agent skill from m4r1k/Eneru.

    149 GitHub starsUsed in 1 repo~2.3k tokens
    DevOps & CloudAuto-check passed
  • Release Review

    m4r1k/Eneru

    Mandatory pre-release deep review for minor/major releases (X.Y.0 / X.0.0).

    149 GitHub stars~1.9k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Archestra Dev Observability

    archestra-ai/archestra

    A skill your agent uses when changing Archestra tracing, metrics, OpenTelemetry, Tempo, Grafana, Prometheus, LLM/MCP spans, observability labels, or local observability setup.

    4.4k GitHub stars~1.2k tokensUpdated today
    DevOps & CloudAuto-check passed

More from qf-studio/navigator

All 32 skills in this repo
  • Nav Start

    qf-studio/navigator

    Load Navigator documentation navigator when starting development session, resuming work, or beginning new feature.

    355 GitHub stars~4.7k tokensUpdated yesterday
    Auto-check: notes
  • Backend Endpoint

    qf-studio/navigator

    Create REST/GraphQL API endpoint with validation, error handling, and tests.

    355 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check: notes
  • Backend Test

    qf-studio/navigator

    Generate backend tests (unit, integration, mocks) for existing code.

    355 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check: notes
  • Database Migration

    qf-studio/navigator

    Create database migration with schema changes and rollback. An agent skill from qf-studio/navigator.

    355 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check: notes
  • Frontend Component

    qf-studio/navigator

    Create React/Vue component with TypeScript, tests, and styles.

    355 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check: notes
  • Frontend Test

    qf-studio/navigator

    Generate frontend component tests (React Testing Library, Vue Test Utils, snapshot) for existing components.

    355 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check: notes

Questions about Nav Init

What does Nav Init do?

Initialize Navigator documentation structure in a project. An agent skill from qf-studio/navigator. Nav Init is an agent skill from qf-studio/navigator. Initialize Navigator documentation structure in a project.

When should I use Nav Init?

Nav Init fits situations like: says Initialize Navigator; set up Navigator; create Navigator structure; bootstrap Navigator.

How do I install Nav Init in Claude Code?

Run `npx skills add qf-studio/navigator --skill nav-init -a claude-code`. Or copy the skill folder (skills/nav-init in qf-studio/navigator) into .claude/skills/nav-init in your project. Claude Code loads it when a task matches its description.

How do I install Nav Init in Codex?

Run `npx skills add qf-studio/navigator --skill nav-init -a codex`. Or copy the skill folder (skills/nav-init in qf-studio/navigator) into .agents/skills/nav-init in your project. Codex loads it when a task matches its description.

Can I use Nav Init in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add qf-studio/navigator --skill nav-init -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nav-init, .gemini/skills/nav-init, .github/skills/nav-init and .opencode/skills/nav-init in your project.

What does Nav Init need to run?

Going by SKILL.md and its folder, Nav Init needs Python for the scripts in its folder and the command-line tools its instructions call (claude and docker). Our summary lists: Python 3; Node.js; Docker. Its frontmatter pre-approves these tools: Write, Bash, Read, Glob.

Does Nav Init access the network?

SKILL.md contains no URLs. Its commands use docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Nav Init safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Nav Init use?

Nav Init is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Nav Init use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Nav Init?

Skills that share tags, products or a category with Nav Init: Syncmeta (pawurb/hotpath-rs, 1.9k stars), Optimize Slurm Topology (NVlabs/alpasim, 1.3k stars), Dashboard Preview (m4r1k/Eneru, 149 stars) and Graft (m4r1k/Eneru, 149 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Nav Init?

qf-studio (a GitHub organization) maintains it in qf-studio/navigator, which has 355 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on October 8, 2026.

Source: qf-studio/navigator on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.