feature-tracker
Maintain product feature specifications with versioning, tagging, and human-described tests. Use when adding features, listing features, querying by tags, tracking feature versions, writing feature tests, or managing product roadmaps.
What this skill does
# Feature Tracker
Maintain detailed product feature specifications in SQLite. Features are authored collaboratively through iteration loops, versioned on every edit, tagged for flexible querying, and paired with human-described tests.
## Invocation
```
/feature-tracker <product> add # Add a new feature (full interview)
/feature-tracker <product> scan-docs <path> # Discover features from documentation
/feature-tracker <product> scan-code <path> # Discover features from a codebase
/feature-tracker <product> review # Review AI-discovered features (approve/reject)
/feature-tracker <product> edit <uuid> # Edit a feature (new version created)
/feature-tracker <product> list # List all features
/feature-tracker <product> list tag=X AND tag=Y # Query by tags (AND/OR)
/feature-tracker <product> list release=2.0 # Filter by target release
/feature-tracker <product> list unapproved # Show only AI-discovered, not yet approved
/feature-tracker <product> show <uuid> # Full detail + test + version history
/feature-tracker <product> test <uuid> # Add/edit human-described test
/feature-tracker <product> tag <uuid> <tags> # Add tags to a feature
/feature-tracker <product> publish # Generate products/<product>-features.md
/feature-tracker <product> publish <tag-order> # Custom section ordering
/feature-tracker <product> release <version> # Show release summary
/feature-tracker <product> status # Dashboard
/feature-tracker <product> init # Initialize product
```
## Preflight Check (REQUIRED — run before ANY action)
Before doing anything else, run this check. **If it fails, STOP. Do not fall back to markdown files, flat files, or any workaround. Fix the dependency first.**
```bash
# 1. Check sqlite3 is available
which sqlite3 || python3 -c "import sqlite3; print('python3-sqlite3')"
# 2. Check DB directory exists
ls .claude/db/ 2>/dev/null || mkdir -p .claude/db
# 3. Check DB is initialized (has tables)
sqlite3 .claude/db/marketing.sqlite ".tables" 2>/dev/null | grep -q product_features
```
**If sqlite3 is not installed:**
```
STOP: sqlite3 is not available on this system.
Install it:
macOS: brew install sqlite3
Ubuntu: sudo apt-get install sqlite3
Alpine: apk add sqlite
Python: sqlite3 module is built-in — use python3 instead of sqlite3 CLI
Cannot proceed without SQLite. This skill MUST NOT write directly to markdown
or any other format as a workaround. The database is the source of truth.
```
Present this message to the user and stop. Do not attempt alternative approaches.
**If DB exists but tables are missing**, run [schema.sql](schema.sql) and the competitive-intel schema first.
## Database
**Path:** `.claude/db/marketing.sqlite` (shared with competitive-intel)
Schema is in [schema.sql](schema.sql). Queries are in [queries.sql](queries.sql). Reuses `our_products` and `tags` tables from competitive-intel.
Always run `PRAGMA foreign_keys=ON;` before writes.
**NEVER write feature data directly to markdown, JSON, or any other file.** The database is the only place feature data is stored. Markdown is only generated via the `publish` command from database contents.
## Iteration Patterns
Two collaboration modes used throughout:
**h/ai iterate** — Human leads. Human provides text → AI enhances and presents → human accepts or gives feedback → AI revises → repeat until accepted. Keep human input short — ask simple questions, don't require essays.
**ai/h iterate** — AI leads. AI proposes → human accepts or gives feedback → AI revises → repeat. AI does the heavy lifting, human just approves or nudges.
Always use `AskUserQuestion` for each iteration step. Keep questions short. Accept `y`, `yes`, `ok`, `good` as approval. Any other response is feedback to iterate on.
## Workflows
### Add a Feature
```
/feature-tracker izuma-edge add
```
Run these steps in order. Each step is one `AskUserQuestion` round.
**Step 1: Detailed Description (h/ai iterate)**
Interview the user to build the description. Ask short, focused questions:
```
What does this feature do? (one sentence is fine)
```
Then based on their answer, ask follow-up questions to fill gaps:
- Who uses it? (end user, admin, API consumer)
- What problem does it solve?
- Any constraints or requirements?
After gathering enough, write a polished multi-paragraph description and present:
```
Here's the detailed description I wrote from your input:
[paragraphs]
> accept | <your feedback>
```
Iterate until accepted.
**Step 2: Short Description (ai/h iterate)**
Propose a ≤10 word summary based on the detailed description:
```
Short description: "Real-time edge inference with sub-millisecond latency"
> accept | <your version>
```
**Step 3: Tags (ai/h iterate)**
Suggest tags based on the description content:
```
Suggested tags: performance, inference, edge, real-time, latency
> accept | <add/remove tags>
```
Tags are comma-separated. Any string is valid — no registration needed (auto-created in `tags` table).
**Step 4: Target Release (ai/h iterate)**
```
Target release? (e.g., 1.0, 2.0, backlog)
```
**Step 5: Human-Described Test**
**5a: Test Description (h/ai iterate)**
```
Describe how you'd test this feature. No code — just what must be true.
(e.g., "When I send a request from Tokyo, response arrives in under 1ms")
```
Enhance their description into a clear, structured test spec. Present and iterate.
**5b: Test Title (ai/h iterate)**
Propose a short title for the test:
```
Test title: "Verify sub-millisecond P99 latency from edge nodes"
> accept | <your version>
```
**Step 6: Commit to Database**
1. Generate UUID: `SELECT lower(hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-4' || substr(hex(randomblob(2)),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(hex(randomblob(2)),2) || '-' || hex(randomblob(6)))`
2. Ensure all tags exist in `tags` table (INSERT OR IGNORE)
3. INSERT into `product_features` (version = 1, human_approved = 1, source = 'interview')
4. INSERT into `product_feature_versions` (snapshot version 1)
5. INSERT into `product_feature_tags`
6. Generate test UUID, INSERT into `product_feature_tests`
7. Show the completed feature with UUID:
```
✔ Feature created: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
"Real-time edge inference with sub-ms latency"
Tags: performance, inference, edge, real-time, latency
Release: 1.0 | Version: 1 | Test: ✔
```
### Edit a Feature
```
/feature-tracker izuma-edge edit a1b2c3d4-...
```
1. Show current feature detail
2. Ask what to change (description, short_desc, tags, release, test)
3. Run the appropriate iteration loop for the changed fields
4. **Auto-increment version** on `product_features`
5. INSERT new snapshot into `product_feature_versions`
6. If test changed, increment test version too
### Mark as Implemented
```
/feature-tracker izuma-edge implement a1b2c3d4-... 1.0
```
1. UPDATE `product_features SET status = 'implemented'`
2. UPDATE `product_feature_versions SET implemented_in = '1.0' WHERE feature_id = ? AND version = ?`
### Tag Query
```
/feature-tracker izuma-edge list tag=security AND tag=api
/feature-tracker izuma-edge list tag=security OR tag=encryption
```
Parse the tag expression:
- **AND**: features must have ALL specified tags (use HAVING COUNT = tag_count)
- **OR**: features must have ANY specified tag (use IN)
- **Mixed**: parse left-to-right, AND binds tighter than OR
See [queries.sql](queries.sql) for the query templates.
Display results as a table:
```
UUID (short) | Short Description | Release | Status | ✔ | Tags
a1b2c3d4 | Sub-ms edge inference | 1.0 | implemented | ✔ | performance, edge, latency
e5f6a7b8 | Mutual TLS for device auth | 1.0 | approved | ✔ | security, apiRelated in Data & Analytics
clawarr-suite
IncludedComprehensive management for self-hosted media stacks (Sonarr, Radarr, Lidarr, Readarr, Prowlarr, Bazarr, Overseerr, Plex, Tautulli, SABnzbd, Recyclarr, Unpackerr, Notifiarr, Maintainerr, Kometa, FlareSolverr). Deep library exploration, analytics, dashboard generation, content management, request handling, subtitle management, indexer control, download monitoring, quality profile sync, library cleanup automation, notification routing, collection/overlay management, and media tracker integration (Trakt, Letterboxd, Simkl).
querying-soql
IncludedSOQL query generation, optimization, and analysis with 100-point scoring. Use this skill when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance or safety improvements for Salesforce queries. TRIGGER when: user writes, optimizes, or debugs SOQL/SOSL queries, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER when: bulk data operations (use handling-sf-data), Apex DML logic (use generating-apex), or report/dashboard queries.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
habit-flow
IncludedAI-powered atomic habit tracker with natural language logging, streak tracking, smart reminders, and coaching. Use for creating habits, logging completions naturally ("I meditated today"), viewing progress, and getting personalized coaching.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
visualizing-data
IncludedBuilds dashboards, reports, and data-driven interfaces requiring charts, graphs, or visual analytics. Provides systematic framework for selecting appropriate visualizations based on data characteristics and analytical purpose. Includes 24+ visualization types organized by purpose (trends, comparisons, distributions, relationships, flows, hierarchies, geospatial), accessibility patterns (WCAG 2.1 AA compliance), colorblind-safe palettes, and performance optimization strategies. Use when creating visualizations, choosing chart types, displaying data graphically, or designing data interfaces.