nav-features
Show and toggle Navigator features. Auto-invoke when user says "show features", "enable/disable feature", "my navigator settings", or "configure navigator".
Files3
View on GitHubSKILL.mdskills/nav-features/SKILL.md
GitHubNavigator Features Skill
Display and toggle Navigator features with an interactive table. Helps users understand what's enabled and customize their setup.
When to Invoke
Invoke this skill when the user:
- Says "show my features", "navigator features", "what features are enabled"
- Says "enable [feature]", "disable [feature]", "turn on/off [feature]"
- Says "configure navigator", "my navigator settings"
- Asks "what can navigator do?", "what features are available?"
DO NOT invoke if:
- User is asking about project features (not Navigator)
- User is in middle of implementation
- Just starting session (use nav-start instead)
Execution Steps
Step 1: Read Current Configuration
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"
python3 "$PLUGIN_DIR/skills/nav-features/functions/feature_manager.py" show
This displays the feature table (one row per configurable Navigator feature, current version's number in the header):
v<version> Features:
┌─────────────────────────┬────────┬───────────────────────────────────────────────┐
│ Feature │ Status │ Description │
├─────────────────────────┼────────┼───────────────────────────────────────────────┤
│ task_mode │ [x] │ Auto-detects task complexity, defers to sk... │
│ tom_features │ [x] │ Verification checkpoints, user profile, di... │
│ loop_mode │ [ ] │ Autonomous loop execution (enable when nee... │
│ simplification │ [x] │ Post-implementation code cleanup with Opus │
│ auto_update │ [x] │ Update notice on session start │
│ knowledge_graph │ [x] │ Unified project knowledge + experiential m... │
│ compact_hook │ [x] │ Injects rich summary into compacted sessions │
│ workflow_enforcer_hook │ [x] │ Enforces WORKFLOW CHECK block before task ... │
│ read_guard_hook │ [x] │ Warns on excessive Reads (push to agents) │
│ workflow_state_hook │ [x] │ Tracks current task/phase across the session │
│ task_graph_sync_hook │ [x] │ Auto-syncs task files into the knowledge g... │
│ profile_sync_hook │ [x] │ Auto-captures preferences/corrections into... │
│ dispatcher │ [x] │ Single hook dispatcher runtime (nav_dispat... │
│ tier1 │ [ ] │ Zero-token answers for whitelisted prompts │
│ stop_completion │ [ ] │ Completion gate on Stop (decision:block) │
│ reject_log │ [x] │ One JSONL line per refusal (.agent/.nav-re... │
│ jit_memory │ [ ] │ Injects relevant memories after tool use │
│ subagent_context │ [ ] │ Injects project context into subagents (2k) │
│ failure_diagnosis │ [ ] │ Surfaces graph pitfalls on tool failures │
│ judge │ [ ] │ Jev judgments overlay the prompt scorers │
│ adhd_mode │ [ ] │ Per-person reply shaping (one next action,... │
│ ste_mode │ [ ] │ STE sentence rules, personal switch │
│ config_guard │ [x] │ Warns when .nav-config.json edits break JSON │
│ setup_hook │ [x] │ One-line runtime status on the Setup event │
└─────────────────────────┴────────┴───────────────────────────────────────────────┘
All v<version> features configured.
Step 2: Handle Toggle Request (If Applicable)
If user requested to enable/disable a feature:
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"
# Enable a feature
python3 "$PLUGIN_DIR/skills/nav-features/functions/feature_manager.py" enable task_mode
# Disable a feature
python3 "$PLUGIN_DIR/skills/nav-features/functions/feature_manager.py" disable loop_mode
# Personal toggle (team repo): write to .agent/.nav-config.local.json, not the shared file
python3 "$PLUGIN_DIR/skills/nav-features/functions/feature_manager.py" disable judge --local
Personal overrides (v7.8.0+): .agent/.nav-config.json is committed and shared.
.agent/.nav-config.local.json is gitignored (nav-init adds it) and merges over the
shared file last — DEFAULTS < shared < local — in both the hook runtime and this
script. Use --local when the user says "for me only", "just on my machine", or has
no key for a shared-on feature (typical: disable judge --local). show marks rows
the local file decides with L and prints a legend; toggling the shared value while a
local override exists prints a warning so nobody wonders why nothing changed.
Supported features:
Core (config-toggled):
task_mode- Unified workflow orchestrationtom_features- Theory of Mind (verification checkpoints, profile, diagnostics)loop_mode- Autonomous loop executionsimplification- Code cleanup before commitauto_update- Update notice on session start; the update is one commandknowledge_graph- Unified project knowledge + memories (v6.0.0)
Hooks (config-toggled, edit with caution):
compact_hook- Pre-compact summary injectionworkflow_enforcer_hook- Mandatory WORKFLOW CHECK block (disabling weakens guardrails)read_guard_hook- Anti upfront-loading guardworkflow_state_hook- Tracks task/phase across the sessiontask_graph_sync_hook- Auto-syncs tasks into knowledge graphprofile_sync_hook- Auto-captures profile corrections
v7 hooks runtime (config-toggled; new blocking/injecting features ship OFF):
dispatcher- Single hook dispatcher runtime (nav_dispatch); ON by default — disabling turns off ALL hook ops at oncetier1- Zero-token answers for whitelisted prompts (per-rule flags live undertier1.rules.*in.agent/.nav-config.json; edit those directly)stop_completion- Completion gate on Stop via decision:block (stop_completion.continue_enabledstays false;max_continuescaps at 2)reject_log- one JSON line per refusal (read-guard deny, prompt-gate block, stop-gate block) in.agent/.nav-rejects.jsonl, both runtimes, bounded to 500 lines; observes only, so it ships on./navshows it behindl.jit_memory- Just-in-time memory injection after tool usesubagent_context- Project context injection into subagents (subagent_context.budget_chars, default 2000)failure_diagnosis- Graph-pitfall injection on PostToolUseFailure (ships OFF)judge- Typed prompt judge (TypeSafe Jev) behind the loop/complexity/ambiguity scorers (ships OFF). Needs a key:TYPESAFE_API_KEYor~/.config/typesafe/api_key, never inside.nav-config.json. Afterenable judge, show the key hint the toggle prints and point to.agent/sops/integrations/typesafe-judge-setup.mdadhd_mode- ADHD-friendly reply shape (one next action first, deadlines bold, lists capped, no preamble). The switch is the person's:enable adhd_modewrites~/.config/navigator/adhd-mode.json, not the repo, and the user can also just sayadhd mode on/adhd mode offat any prompt (answered by the hook, zero model turn).--localpinsadhd_mode.onin.nav-config.local.json; a repo pin wins over the personal switch.adhd_mode.enabledonly makes the machinery availableste_mode- Simplified Technical English sentences (ASD-STE100 Part 1: one idea per sentence, 20 words, imperative, active voice, no gerunds). Same personal-switch mechanics asadhd_mode:enable ste_modewrites~/.config/navigator/ste-mode.json, or sayste mode on/use ste/ste mode offat any prompt. Both modes may be on; the ADHD block comes first and the STE block applies inside itconfig_guard- systemMessage warning on invalid.nav-config.jsonedits (safety surface, ON by default)setup_hook- One-line runtime status on the Setup event (safety surface, ON by default)
After toggle, show updated table.
Step 3: Explain Feature (If Asked)
If user asks about a specific feature, provide details:
task_mode:
Task Mode (v5.6.0)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Auto-detects task complexity and routes appropriately:
- Simple tasks → Direct execution
- Skill matches → Defers to skill workflow
- Substantial → Task Mode phases (RESEARCH→COMPLETE)
Config: task_mode.enabled, complexity_threshold (0.5)
tom_features:
Theory of Mind (v5.0.0)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Human-AI collaboration improvements:
- Verification checkpoints for high-stakes skills
- User profile (nav-profile) - remembers preferences
- Quality detection (nav-diagnose) - catches drift
Config: tom_features.verification_checkpoints, profile_enabled
loop_mode:
Loop Mode (v5.1.0)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
"Run until done" capability:
- Structured completion signals (NAVIGATOR_STATUS)
- Dual-condition exit (heuristics + EXIT_SIGNAL)
- Stagnation detection prevents infinite loops
Trigger: "run until done", "loop mode"
Config: loop_mode.enabled, max_iterations (5)
simplification:
Code Simplification (v5.4.0)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Automatic code clarity improvements:
- Runs post-implementation, before commit
- Clarity over brevity, functionality preserved
- Uses Opus model for best results
Trigger: "simplify this code"
Config: simplification.enabled, trigger, scope
auto_update:
Auto-Update (v5.5.0)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Read-only update notice on session start (v8: Navigator never updates itself from a hook):
- Compares the running version with the latest GitHub release, at most every
`check_interval_hours`, never under Pilot
- Shows `claude plugin update navigator@navigator-marketplace` when one is newer
- "Start my Navigator session" applies it (nav-start Step 1.5); restart Claude Code after
- Never blocks session start; disabled means no check and no notice
- Under `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` the engine refuses the fetch; opt in with
`curl_fallback: true` to repeat the same GET through curl (ships off)
Config: auto_update.enabled, check_interval_hours (1), curl_fallback (false)
Predefined Functions
functions/feature_manager.py
Purpose: Display and toggle Navigator features
Usage:
# Show all features
python3 feature_manager.py show
# Show for first session (includes welcome message)
python3 feature_manager.py show --first-session
# Enable a feature
python3 feature_manager.py enable task_mode
# Disable a feature
python3 feature_manager.py disable loop_mode
# Disable only for this contributor (.agent/.nav-config.local.json, gitignored)
python3 feature_manager.py disable judge --local
# Get feature details
python3 feature_manager.py info task_mode
Output: Formatted feature table or status message
Error Handling
Config not found:
❌ .nav-config.json not found
Run "Initialize Navigator in this project" first.
Unknown feature: lists all available feature names (see Supported features section above). The error message is generated dynamically from the FEATURES dict, so it stays current as features are added.
Success Criteria
- Feature table displayed correctly
- Toggle updates config file
- Updated table shown after toggle
- Feature details available on request
Notes
This skill is triggered on first session (via nav-start) to help users understand available features and optionally disable unused ones to save tokens.