Skip to content
Back to skills

Nav Features

ASecurity

Show and toggle Navigator features. Auto-invoke when user says "show features", "enable/disable feature", "my navigator settings", or "configure navigator".

  • 354 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 19, 2026
ai-agentspythonbashrailsgitapi

Works with

  • claude code
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 7, 2026

npx -y skills add qf-studio/navigator --skill nav-features --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Nav Features?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Nav Features
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/qf-studio-nav-features/badge)](https://www.skillsdirectory.com/skills/qf-studio-nav-features)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: nav-features
description: Show and toggle Navigator features. Auto-invoke when user says "show features", "enable/disable feature", "my navigator settings", or "configure navigator".
allowed-tools: Read, Write, Bash
version: 1.0.0
---

# Navigator 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

```bash
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:

```bash
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 orchestration
- `tom_features` - Theory of Mind (verification checkpoints, profile, diagnostics)
- `loop_mode` - Autonomous loop execution
- `simplification` - Code cleanup before commit
- `auto_update` - Update notice on session start; the update is one command
- `knowledge_graph` - Unified project knowledge + memories (v6.0.0)

Hooks (config-toggled, edit with caution):
- `compact_hook` - Pre-compact summary injection
- `workflow_enforcer_hook` - Mandatory WORKFLOW CHECK block (disabling weakens guardrails)
- `read_guard_hook` - Anti upfront-loading guard
- `workflow_state_hook` - Tracks task/phase across the session
- `task_graph_sync_hook` - Auto-syncs tasks into knowledge graph
- `profile_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 once
- `tier1` - Zero-token answers for whitelisted prompts (per-rule flags live under
  `tier1.rules.*` in `.agent/.nav-config.json`; edit those directly)
- `stop_completion` - Completion gate on Stop via decision:block
  (`stop_completion.continue_enabled` stays false; `max_continues` caps 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. `/nav` shows it behind `l`.
- `jit_memory` - Just-in-time memory injection after tool use
- `subagent_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_KEY` or `~/.config/typesafe/api_key`,
  never inside `.nav-config.json`. After `enable judge`, show the key hint the toggle
  prints and point to `.agent/sops/integrations/typesafe-judge-setup.md`
- `adhd_mode` - ADHD-friendly reply shape (one next action first, deadlines bold,
  lists capped, no preamble). The switch is the person's: `enable adhd_mode` writes
  `~/.config/navigator/adhd-mode.json`, not the repo, and the user can also just say
  `adhd mode on` / `adhd mode off` at any prompt (answered by the hook, zero model
  turn). `--local` pins `adhd_mode.on` in `.nav-config.local.json`; a repo pin wins
  over the personal switch. `adhd_mode.enabled` only makes the machinery available
- `ste_mode` - Simplified Technical English sentences (ASD-STE100 Part 1: one idea per
  sentence, 20 words, imperative, active voice, no gerunds). Same personal-switch
  mechanics as `adhd_mode`: `enable ste_mode` writes `~/.config/navigator/ste-mode.json`,
  or say `ste mode on` / `use ste` / `ste mode off` at any prompt. Both modes may be on;
  the ADHD block comes first and the STE block applies inside it
- `config_guard` - systemMessage warning on invalid `.nav-config.json` edits
  (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**:
```bash
# 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.

Files in this skill

  • SKILL.md10.5 KB
  • functions/feature_manager.py18.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.