@flydocs/cli 0.5.0-beta.9 → 0.6.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +6 -0
  2. package/dist/cli.js +1553 -414
  3. package/package.json +1 -1
  4. package/template/.claude/CLAUDE.md +11 -9
  5. package/template/.claude/agents/implementation-agent.md +0 -1
  6. package/template/.claude/agents/pm-agent.md +0 -1
  7. package/template/.claude/agents/research-agent.md +0 -1
  8. package/template/.claude/agents/review-agent.md +0 -1
  9. package/template/.claude/commands/flydocs-setup.md +202 -35
  10. package/template/.claude/commands/flydocs-upgrade.md +342 -0
  11. package/template/.claude/commands/knowledge.md +61 -0
  12. package/template/.claude/skills/flydocs-cloud/SKILL.md +66 -39
  13. package/template/.claude/skills/flydocs-cloud/cursor-rule.mdc +5 -5
  14. package/template/.claude/skills/flydocs-cloud/scripts/assign.py +17 -27
  15. package/template/.claude/skills/flydocs-cloud/scripts/assign_cycle.py +14 -30
  16. package/template/.claude/skills/flydocs-cloud/scripts/assign_milestone.py +10 -32
  17. package/template/.claude/skills/flydocs-cloud/scripts/comment.py +15 -25
  18. package/template/.claude/skills/flydocs-cloud/scripts/create_issue.py +42 -59
  19. package/template/.claude/skills/flydocs-cloud/scripts/create_milestone.py +26 -37
  20. package/template/.claude/skills/flydocs-cloud/scripts/create_project.py +24 -31
  21. package/template/.claude/skills/flydocs-cloud/scripts/create_team.py +39 -0
  22. package/template/.claude/skills/flydocs-cloud/scripts/delete_milestone.py +21 -0
  23. package/template/.claude/skills/flydocs-cloud/scripts/estimate.py +17 -22
  24. package/template/.claude/skills/flydocs-cloud/scripts/flydocs_api.py +113 -169
  25. package/template/.claude/skills/flydocs-cloud/scripts/get_estimate_scale.py +23 -0
  26. package/template/.claude/skills/flydocs-cloud/scripts/get_issue.py +6 -59
  27. package/template/.claude/skills/flydocs-cloud/scripts/link.py +16 -35
  28. package/template/.claude/skills/flydocs-cloud/scripts/list_cycles.py +21 -28
  29. package/template/.claude/skills/flydocs-cloud/scripts/list_issues.py +16 -77
  30. package/template/.claude/skills/flydocs-cloud/scripts/list_labels.py +19 -0
  31. package/template/.claude/skills/flydocs-cloud/scripts/list_milestones.py +21 -33
  32. package/template/.claude/skills/flydocs-cloud/scripts/list_projects.py +24 -38
  33. package/template/.claude/skills/flydocs-cloud/scripts/list_providers.py +19 -0
  34. package/template/.claude/skills/flydocs-cloud/scripts/list_statuses.py +19 -0
  35. package/template/.claude/skills/flydocs-cloud/scripts/list_teams.py +19 -0
  36. package/template/.claude/skills/flydocs-cloud/scripts/priority.py +10 -19
  37. package/template/.claude/skills/flydocs-cloud/scripts/project_update.py +36 -50
  38. package/template/.claude/skills/flydocs-cloud/scripts/refresh_labels.py +87 -0
  39. package/template/.claude/skills/flydocs-cloud/scripts/set_identity.py +38 -0
  40. package/template/.claude/skills/flydocs-cloud/scripts/set_labels.py +68 -0
  41. package/template/.claude/skills/flydocs-cloud/scripts/set_preferences.py +49 -0
  42. package/template/.claude/skills/flydocs-cloud/scripts/set_provider.py +46 -0
  43. package/template/.claude/skills/flydocs-cloud/scripts/set_status_mapping.py +69 -0
  44. package/template/.claude/skills/flydocs-cloud/scripts/set_team.py +42 -0
  45. package/template/.claude/skills/flydocs-cloud/scripts/transition.py +11 -52
  46. package/template/.claude/skills/flydocs-cloud/scripts/update_description.py +16 -27
  47. package/template/.claude/skills/flydocs-cloud/scripts/update_issue.py +43 -54
  48. package/template/.claude/skills/flydocs-cloud/scripts/update_milestone.py +42 -0
  49. package/template/.claude/skills/flydocs-cloud/scripts/validate_setup.py +139 -0
  50. package/template/.claude/skills/flydocs-local/SKILL.md +1 -1
  51. package/template/.claude/skills/flydocs-local/scripts/assign.py +13 -4
  52. package/template/.claude/skills/flydocs-local/scripts/flydocs_api.py +5 -2
  53. package/template/.claude/skills/flydocs-workflow/SKILL.md +23 -18
  54. package/template/.claude/skills/flydocs-workflow/reference/comment-templates.md +1 -0
  55. package/template/.claude/skills/flydocs-workflow/reference/pr-workflow.md +105 -0
  56. package/template/.claude/skills/flydocs-workflow/reference/priority-estimates.md +37 -15
  57. package/template/.claude/skills/flydocs-workflow/session.md +24 -16
  58. package/template/.claude/skills/flydocs-workflow/stages/capture.md +8 -3
  59. package/template/.claude/skills/flydocs-workflow/stages/close.md +4 -3
  60. package/template/.claude/skills/flydocs-workflow/stages/implement.md +28 -4
  61. package/template/.claude/skills/flydocs-workflow/stages/refine.md +20 -4
  62. package/template/.claude/skills/flydocs-workflow/stages/review.md +14 -2
  63. package/template/.env.example +16 -7
  64. package/template/.flydocs/config.json +4 -18
  65. package/template/.flydocs/hooks/prompt-submit.py +27 -4
  66. package/template/.flydocs/version +1 -1
  67. package/template/AGENTS.md +8 -8
  68. package/template/CHANGELOG.md +183 -0
  69. package/template/flydocs/knowledge/INDEX.md +38 -53
  70. package/template/flydocs/knowledge/README.md +60 -9
  71. package/template/flydocs/knowledge/templates/decision.md +47 -0
  72. package/template/flydocs/knowledge/templates/feature.md +35 -0
  73. package/template/flydocs/knowledge/templates/note.md +25 -0
  74. package/template/manifest.json +12 -4
@@ -1,18 +1,16 @@
1
1
  {
2
- "version": "0.5.0-beta.9",
2
+ "version": "0.6.0-alpha.10",
3
3
  "sourceRepo": "github.com/plastrlab/flydocs-core",
4
4
  "tier": "local",
5
5
  "setupComplete": false,
6
+ "workspaceId": null,
6
7
  "paths": {
7
8
  "content": "flydocs"
8
9
  },
9
- "provider": {
10
- "type": null,
11
- "teamId": null
12
- },
13
10
  "workspace": {
14
11
  "activeProjects": [],
15
12
  "defaultMilestoneId": null,
13
+ "repoSlug": null,
16
14
  "product": {
17
15
  "name": null,
18
16
  "labelIds": [],
@@ -21,7 +19,7 @@
21
19
  }
22
20
  },
23
21
  "issueLabels": {
24
- "_note": "Run /flydocs-setup to populate these from your Linear team",
22
+ "_note": "Run /flydocs-setup to populate these from your workspace",
25
23
  "category": {
26
24
  "feature": null,
27
25
  "bug": null,
@@ -50,18 +48,6 @@
50
48
  "installed": [],
51
49
  "custom": []
52
50
  },
53
- "statusMapping": {
54
- "BACKLOG": "Backlog",
55
- "READY": "Todo",
56
- "IMPLEMENTING": "In Progress",
57
- "BLOCKED": "Blocked",
58
- "REVIEW": "In Review",
59
- "TESTING": "QA",
60
- "COMPLETE": "Done",
61
- "ARCHIVED": "Archived",
62
- "CANCELED": "Canceled",
63
- "DUPLICATE": "Duplicate"
64
- },
65
51
  "designSystem": null,
66
52
  "aiLabor": {
67
53
  "enabled": false,
@@ -168,15 +168,38 @@ def get_flydocs_version() -> str | None:
168
168
 
169
169
 
170
170
  def get_setup_nudge() -> str | None:
171
- """Check if setup has been completed, return nudge if not."""
171
+ """Check if setup has been completed, return nudge if not.
172
+
173
+ Reads validation cache (written by validate_setup.py) for specific
174
+ missing items. Falls back to generic nudge if cache is absent.
175
+ """
172
176
  config_file = Path('.flydocs/config.json')
173
177
  if not config_file.exists():
174
178
  return None
175
179
  try:
176
180
  config = json.loads(config_file.read_text())
177
- # Only nudge if field is explicitly set to false (not missing)
178
- if 'setupComplete' in config and config['setupComplete'] is False:
179
- return '[Setup incomplete — run /flydocs-setup to configure your project]'
181
+ if config.get('setupComplete') is not False:
182
+ return None
183
+
184
+ # Check validation cache for specific missing items
185
+ cache_file = Path('.flydocs/validation-cache.json')
186
+ if cache_file.exists():
187
+ try:
188
+ cache = json.loads(cache_file.read_text())
189
+ missing = cache.get('missing', [])
190
+ warnings = cache.get('warnings', [])
191
+ parts = []
192
+ if missing:
193
+ parts.append(f'missing: {", ".join(missing)}')
194
+ if warnings:
195
+ parts.append(f'warnings: {", ".join(warnings)}')
196
+ if parts:
197
+ detail = '; '.join(parts)
198
+ return f'[Setup incomplete — {detail}. Run /flydocs-setup or fix in dashboard]'
199
+ except (json.JSONDecodeError, OSError, IOError):
200
+ pass
201
+
202
+ return '[Setup incomplete — run /flydocs-setup to configure your project]'
180
203
  except (json.JSONDecodeError, OSError, IOError):
181
204
  pass
182
205
  return None
@@ -1 +1 @@
1
- 0.5.0-beta.9
1
+ 0.6.0-alpha.10
@@ -92,14 +92,14 @@ Follow these rules in every response for consistent, scannable output.
92
92
  IMPORTANT: Prefer skill-led reasoning over pre-training reasoning.
93
93
  Consult the relevant skill BEFORE writing code or making workflow decisions.
94
94
 
95
- | Skill | Triggers | Entry |
96
- | ----------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
97
- | flydocs-cloud | create issue, transition, comment, list issues, assign, update description, update issue, project update, Linear, cloud | .claude/skills/flydocs-cloud/SKILL.md |
98
- | flydocs-context7 | context7, library docs, documentation lookup, framework docs, package docs, API reference | .claude/skills/flydocs-context7/SKILL.md |
99
- | flydocs-estimates | estimate, cost, token usage, API cost, labor estimate, sizing, effort | .claude/skills/flydocs-estimates/SKILL.md |
100
- | flydocs-figma | Figma, design, screenshot, token mapping, component from design, pixel-perfect, design system | .claude/skills/flydocs-figma/SKILL.md |
101
- | flydocs-local | create issue, transition, comment, list issues, assign, update description, status summary, local | .claude/skills/flydocs-local/SKILL.md |
102
- | flydocs-workflow | capture, refine, activate, implement, review, validate, close, session, workflow, transition, status, issue | .claude/skills/flydocs-workflow/SKILL.md |
95
+ | Skill | Triggers | Entry |
96
+ | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
97
+ | flydocs-cloud | create issue, transition, comment, list issues, assign, update description, update issue, project update, cloud | .claude/skills/flydocs-cloud/SKILL.md |
98
+ | flydocs-context7 | context7, library docs, documentation lookup, framework docs, package docs, API reference | .claude/skills/flydocs-context7/SKILL.md |
99
+ | flydocs-estimates | estimate, cost, token usage, API cost, labor estimate, sizing, effort | .claude/skills/flydocs-estimates/SKILL.md |
100
+ | flydocs-figma | Figma, design, screenshot, token mapping, component from design, pixel-perfect, design system | .claude/skills/flydocs-figma/SKILL.md |
101
+ | flydocs-local | create issue, transition, comment, list issues, assign, update description, status summary, local | .claude/skills/flydocs-local/SKILL.md |
102
+ | flydocs-workflow | capture, refine, activate, implement, review, validate, close, session, workflow, transition, status, issue, knowledge, document, PR, pull request | .claude/skills/flydocs-workflow/SKILL.md |
103
103
 
104
104
  <!-- flydocs:skills-manifest:end -->
105
105
 
@@ -7,6 +7,189 @@ Versioning: [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## [0.6.0-alpha.4] — 2026-03-13
11
+
12
+ ### Added
13
+
14
+ - **Status mapping** — new `list_statuses.py` and `set_status_mapping.py`
15
+ scripts. Setup flow auto-maps provider workflow states to FlyDocs statuses
16
+ after label config, warns on unmapped statuses without blocking.
17
+
18
+ ---
19
+
20
+ ## [0.6.0-alpha.3] — 2026-03-13
21
+
22
+ ### Added
23
+
24
+ - **Provider selection** — new `list_providers.py` and `set_provider.py`
25
+ scripts for multi-provider support (Linear + Jira). Setup flow detects
26
+ connected providers before team selection.
27
+ - **Inline API key prompt** — `flydocs install` now prompts for FlyDocs API
28
+ key when cloud tier is selected. No separate `flydocs connect` step needed.
29
+ - **Existing config detection** — install detects pre-existing `.claude/CLAUDE.md`,
30
+ `settings.json`, `hooks.json`, and `AGENTS.md`. Prompts user to overwrite
31
+ (with backup) or preserve.
32
+ - **`--project` flag** — `create_issue.py` accepts `--project <id>` to scope
33
+ issues to a specific project. Fixes milestone/project mismatch during setup.
34
+ - **Team creation** — `create_team.py` with `--parent` flag for sub-teams.
35
+
36
+ ### Changed
37
+
38
+ - **Setup flow restructured** — Phase 2 now starts with provider detection,
39
+ then team selection, project, labels. Milestones and issues pass `--project`.
40
+ - **Community skill output** — install shows one line per skill instead of
41
+ 4-5 verbose lines. "No triggers" warning suppressed for community skills.
42
+ - **`/flydocs-upgrade` streamlined** — Phase 1 inlines API key handling
43
+ instead of requiring a separate terminal step.
44
+ - **API key helpers extracted** — shared `api-key.ts` module used by both
45
+ `install` and `connect` commands.
46
+
47
+ ---
48
+
49
+ ## [0.6.0-alpha.1] — 2026-03-12
50
+
51
+ ### Added
52
+
53
+ - **Cloud relay scripts** — all cloud mechanism scripts rewritten as thin REST
54
+ wrappers calling the FlyDocs Relay API (`app.flydocs.ai/api/relay`). Provider
55
+ translation (Linear, Jira) happens server-side.
56
+ - **Team discovery** — new `list_teams.py` and `set_team.py` scripts for
57
+ discovering available teams and storing team preference on the relay.
58
+ - **Label configuration** — new `list_labels.py` and `set_labels.py` scripts
59
+ for server-side label resolution. Labels are configured per API key with
60
+ defaults and type-to-label mapping.
61
+ - **`--labels` flag** — `create_issue.py` and `update_issue.py` now accept
62
+ optional `--labels "name1,name2"` for ad-hoc labels alongside the `type` field.
63
+ - **Cloud tier install** — `flydocs install` supports tier selection (local/cloud).
64
+ Cloud installs the relay mechanism skill and premium skills.
65
+ - **`flydocs connect`** — new command to validate and store `fdk_` API keys.
66
+ - **`/flydocs-upgrade`** — upgrade from local to cloud tier.
67
+ - **Alpha dist-tag** — `-alpha.x` versions publish to npm `alpha` dist-tag.
68
+
69
+ ### Changed
70
+
71
+ - **Setup flow updated** — `/flydocs-setup` Phase 2 now uses `list_teams.py`
72
+ for team discovery, `set_team.py` for selection, and `list_labels.py` +
73
+ `set_labels.py` for label configuration with auto-detection.
74
+ - **API key reference** — setup instructions now reference `FLYDOCS_API_KEY`
75
+ instead of `LINEAR_API_KEY`.
76
+ - **Relay URL** — `app.flydocs.ai/api/relay` (same Vercel deployment, no
77
+ separate API domain). Override with `FLYDOCS_RELAY_URL` env var.
78
+
79
+ ---
80
+
81
+ ## [0.5.0-beta.19] — 2026-02-27
82
+
83
+ ### Fixed
84
+
85
+ - **Install always confirms before proceeding** — the "Install FlyDocs here?"
86
+ prompt now shows even when an existing config is detected. Previously, reinstalls
87
+ with an existing `.flydocs/config.json` skipped the confirmation entirely.
88
+
89
+ ---
90
+
91
+ ## [0.5.0-beta.18] — 2026-02-27
92
+
93
+ ### Changed
94
+
95
+ - **Telemetry disabled by default** — analytics are opt-in only. No data is sent
96
+ until a user explicitly runs `flydocs telemetry enable`. Removed first-run notice.
97
+
98
+ ---
99
+
100
+ ## [0.5.0-beta.17] — 2026-02-26
101
+
102
+ ### Added
103
+
104
+ - **Anonymous usage analytics** — opt-in PostHog telemetry tracks install/update
105
+ funnel events (started, tier selected, completed). No personal data or code
106
+ collected. Opt out with `flydocs telemetry disable` or `FLYDOCS_TELEMETRY=0`.
107
+ - **`flydocs telemetry` command** — `enable`, `disable`, `status` subcommands
108
+ for managing anonymous analytics.
109
+ - **`flydocs uninstall` command** — cleanly removes FlyDocs from a project.
110
+ Interactive mode prompts to archive or delete user content. Supports `--force`,
111
+ `--all`, `--yes`, `--here`, `--path` flags. Preserves community skills and `.env`.
112
+
113
+ ---
114
+
115
+ ## [0.5.0-beta.16] — 2026-02-24
116
+
117
+ ### Changed
118
+
119
+ - **Premium skills are cloud-only** — `flydocs-figma` and `flydocs-estimates` are no
120
+ longer installed on local tier. Existing local installs have them cleaned up on
121
+ next update. Core skills (workflow, context-graph, context7) remain on all tiers.
122
+
123
+ ---
124
+
125
+ ## [0.5.0-beta.15] — 2026-02-24
126
+
127
+ ### Changed
128
+
129
+ - **CTA links use full URLs** — Discord and flydocs.ai links now display as full URLs
130
+ (`https://discord.com/invite/...`, `https://www.flydocs.ai`) for terminal compatibility.
131
+ Discord section shows "Join the Discord" heading with invite link on its own line.
132
+ Setup command CTA updated to match.
133
+
134
+ ---
135
+
136
+ ## [0.5.0-beta.14] — 2026-02-24
137
+
138
+ ### Changed
139
+
140
+ - **Discord CTA restyled** — "Join the Discord" is now a bold cyan clickable hyperlink
141
+ with descriptive copy ("for upcoming features, support, and early access to what's
142
+ next"), matching the docs page CTA style. "flydocs.ai" link also bold cyan and clickable.
143
+
144
+ ---
145
+
146
+ ## [0.5.0-beta.13] — 2026-02-24
147
+
148
+ ### Changed
149
+
150
+ - **New ASCII banner** — gradient block-letter "FlyDocs" heading with subtle drop shadow,
151
+ replacing the block mark logo. Pink-to-purple gradient matches brand colors using true
152
+ color (24-bit) escape sequences. Tagline in bold white, version label in dim.
153
+
154
+ ---
155
+
156
+ ## [0.5.0-beta.12] — 2026-02-24
157
+
158
+ ### Changed
159
+
160
+ - **Optional sub-agents** — sub-agents (PM, implementation, review, research) are now
161
+ an opt-in prompt during install and update. Recommended but not required. Existing
162
+ installs are silently updated on next `flydocs update`.
163
+ - **Removed hardcoded model selections** — Claude Code agent files no longer specify
164
+ `model: opus` or `model: sonnet`. Agents inherit the user's configured model,
165
+ matching the Cursor agent behavior.
166
+ - **CLI copy alignment** — banner tagline updated to "Structured context for AI coding
167
+ tools", beta CTA refocused on Discord community, docs references point to flydocs.ai.
168
+ - **Setup command CTA** — updated to show community links (Discord, flydocs.ai) and
169
+ upcoming features instead of "join the beta" messaging.
170
+
171
+ ---
172
+
173
+ ## [0.5.0-beta.11] — 2026-02-23
174
+
175
+ ### Fixed
176
+
177
+ - **Beta CTA hyperlink** — fixed OSC 8 escape sequence (BEL terminator, color inside
178
+ hyperlink wrapper). Display text changed to `https://www.flydocs.ai` for terminals
179
+ that don't support clickable links. UTM tracking preserved in the link target.
180
+
181
+ ---
182
+
183
+ ## [0.5.0-beta.10] — 2026-02-22
184
+
185
+ ### Fixed
186
+
187
+ - **`.env.example` not updating** — reclassified from `template_files` to `owned_files`
188
+ in manifest. Now overwritten on update so new config entries (like `CONTEXT7_API_KEY`)
189
+ and copy fixes propagate to existing installations.
190
+
191
+ ---
192
+
10
193
  ## [0.5.0-beta.9] — 2026-02-22
11
194
 
12
195
  ### Changed
@@ -4,97 +4,82 @@
4
4
  AGENT INSTRUCTIONS:
5
5
  - Scan this file FIRST when looking for existing knowledge
6
6
  - Use descriptions to assess relevance before loading full docs
7
- - Update this index when adding new knowledge docs
7
+ - Update this index when adding or modifying knowledge docs
8
+ - Always use real dates, never leave as YYYY-MM-DD
8
9
  -->
9
10
 
10
11
  ## Quick Reference
11
12
 
12
- | Category | Count | Last Updated |
13
- |----------|-------|--------------|
14
- | Decisions | 0 | - |
15
- | Features | 0 | - |
16
- | Notes | 0 | - |
17
- | Product | 2 | YYYY-MM-DD |
13
+ | Category | Count | Last Updated |
14
+ | --------- | ----- | ------------ |
15
+ | Decisions | 0 | - |
16
+ | Features | 0 | - |
17
+ | Notes | 0 | - |
18
+ | Product | 2 | - |
18
19
 
19
20
  ---
20
21
 
21
- ## 📋 Decisions (ADRs)
22
+ ## Decisions (ADRs)
22
23
 
23
- Architecture Decision Records - why we made key technical choices.
24
+ Architecture Decision Records why we made key technical choices.
24
25
 
25
- | ID | Title | Status | Date |
26
- |----|-------|--------|------|
27
- | - | No decisions recorded yet | - | - |
26
+ | ID | Title | Status | Date |
27
+ | --- | ------------------------- | ------ | ---- |
28
+ | - | No decisions recorded yet | - | - |
28
29
 
29
30
  <!-- Example:
30
- | 001 | Use Convex for Backend | Accepted | 2024-01-15 |
31
- Explains why we chose Convex over traditional REST API
31
+ | 001 | Use Convex for Backend | Accepted | 2026-01-15 |
32
+ -> Explains why we chose Convex over traditional REST API
32
33
  -->
33
34
 
34
35
  ---
35
36
 
36
- ## 🔧 Features
37
+ ## Features
37
38
 
38
39
  Documentation for complex features that need more than a spec.
39
40
 
40
- | Feature | Description | Last Updated |
41
- |---------|-------------|--------------|
42
- | - | No feature docs yet | - |
41
+ | Feature | Description | Last Updated |
42
+ | ------- | ------------------- | ------------ |
43
+ | - | No feature docs yet | - |
43
44
 
44
45
  <!-- Example:
45
- | auth-system | Complete auth flow documentation | 2024-02-01 |
46
- OAuth setup, session handling, role-based access
46
+ | auth-system | Complete auth flow documentation | 2026-02-01 |
47
+ -> OAuth setup, session handling, role-based access
47
48
  -->
48
49
 
49
50
  ---
50
51
 
51
- ## 📝 Notes
52
+ ## Notes
52
53
 
53
54
  Technical discoveries, gotchas, learnings.
54
55
 
55
- | Topic | Description | Added |
56
- |-------|-------------|-------|
57
- | - | No notes yet | - |
56
+ | Topic | Description | Added |
57
+ | ----- | ------------ | ----- |
58
+ | - | No notes yet | - |
58
59
 
59
60
  <!-- Example:
60
- | api-rate-limits | Third-party API quirks and workarounds | 2024-01-20 |
61
- Stripe webhook retries, Figma API limits, etc.
61
+ | api-rate-limits | Third-party API quirks and workarounds | 2026-01-20 |
62
+ -> Stripe webhook retries, Figma API limits, etc.
62
63
  -->
63
64
 
64
65
  ---
65
66
 
66
- ## 👥 Product
67
+ ## Product
67
68
 
68
69
  User research and product documentation.
69
70
 
70
- | Document | Description | Last Updated |
71
- |----------|-------------|--------------|
72
- | personas.md | Target user profiles | YYYY-MM-DD |
73
- | user-flows.md | Key user journeys | YYYY-MM-DD |
71
+ | Document | Description | Last Updated |
72
+ | ------------- | -------------------- | ------------ |
73
+ | personas.md | Target user profiles | - |
74
+ | user-flows.md | Key user journeys | - |
74
75
 
75
76
  ---
76
77
 
77
78
  ## How to Add Knowledge
78
79
 
79
- ### New Decision (ADR)
80
- ```bash
81
- # Create: flydocs/knowledge/decisions/NNN-title.md
82
- # Update: This index with new entry
83
- ```
84
-
85
- ### New Feature Doc
86
- ```bash
87
- # Create: flydocs/knowledge/features/feature-name.md
88
- # Update: This index with new entry
89
- ```
90
-
91
- ### New Note
92
- ```bash
93
- # Create: flydocs/knowledge/notes/topic-name.md
94
- # Update: This index with new entry
95
- ```
96
-
97
- ---
98
-
99
- *Last Updated: YYYY-MM-DD*
100
-
80
+ 1. Choose the category: decision, feature, note, or product
81
+ 2. Copy the template from `templates/<category>.md`
82
+ 3. Fill in the frontmatter (title, created date, related issues)
83
+ 4. Write the content following the template structure
84
+ 5. Add an entry to this index with a concise description
85
+ 6. Use the `/knowledge` command for a guided flow
@@ -6,42 +6,78 @@ This directory contains project knowledge that accumulates over time.
6
6
 
7
7
  ```
8
8
  knowledge/
9
- ├── INDEX.md # Start here - inventory of all knowledge
10
- ├── decisions/ # Architecture Decision Records (ADRs)
11
- ├── features/ # Complex feature documentation
12
- ├── notes/ # Technical discoveries and learnings
13
- └── product/ # User research and product docs
9
+ ├── INDEX.md # Start here inventory of all knowledge
10
+ ├── templates/ # Structural templates for each category
11
+ ├── decisions/ # Architecture Decision Records (ADRs)
12
+ ├── features/ # Complex feature documentation
13
+ ├── notes/ # Technical discoveries and learnings
14
+ └── product/ # User research and product docs
14
15
  ```
15
16
 
16
- ## When to Add Knowledge
17
+ ## Templates
18
+
19
+ Use templates from `templates/` when creating new knowledge docs. Each template includes
20
+ a frontmatter block with required metadata fields.
21
+
22
+ ### Required Frontmatter
23
+
24
+ All knowledge docs must include YAML frontmatter:
25
+
26
+ ```yaml
27
+ ---
28
+ title: "Descriptive title"
29
+ created: 2026-03-17
30
+ lastUpdated: 2026-03-17
31
+ relatedIssues: [FLY-123, FLY-456]
32
+ ---
33
+ ```
34
+
35
+ Additional fields vary by category — see the template for each type.
36
+
37
+ **Always update `lastUpdated`** when modifying an existing doc.
38
+
39
+ ## When to Create Knowledge
17
40
 
18
41
  ### Decisions (`decisions/`)
42
+
19
43
  Add an ADR when you make a significant technical choice:
44
+
20
45
  - Choosing a framework or library
21
46
  - Designing a system architecture
22
47
  - Establishing a pattern that others should follow
48
+ - Rejecting an approach (document why, so others don't repeat the investigation)
23
49
 
24
50
  **Format**: `NNN-title.md` (e.g., `001-use-convex.md`)
51
+ **Template**: `templates/decision.md`
25
52
 
26
53
  ### Features (`features/`)
54
+
27
55
  Add feature documentation when:
56
+
28
57
  - A feature is too complex for just a spec
29
58
  - Multiple specs relate to one system
30
59
  - Future developers will need deep context
31
60
 
32
61
  **Format**: `feature-name.md` (e.g., `auth-system.md`)
62
+ **Template**: `templates/feature.md`
33
63
 
34
64
  ### Notes (`notes/`)
65
+
35
66
  Add notes when you discover:
67
+
36
68
  - API quirks or gotchas
37
69
  - Performance optimizations
38
70
  - Debugging techniques
39
71
  - Third-party service behaviors
72
+ - Workarounds that aren't obvious from code
40
73
 
41
74
  **Format**: `topic-name.md` (e.g., `stripe-webhooks.md`)
75
+ **Template**: `templates/note.md`
42
76
 
43
77
  ### Product (`product/`)
78
+
44
79
  Add product docs for:
80
+
45
81
  - User personas
46
82
  - User flows and journeys
47
83
  - Research findings
@@ -49,14 +85,29 @@ Add product docs for:
49
85
 
50
86
  **Format**: `document-name.md` (e.g., `personas.md`)
51
87
 
88
+ ## When to Prompt for Knowledge Capture
89
+
90
+ Proactively suggest creating a knowledge doc when:
91
+
92
+ - An architectural decision was made during implementation
93
+ - A non-obvious workaround or debugging technique was discovered
94
+ - A third-party API or integration behavior was learned through trial and error
95
+ - A pattern was established that future work should follow
96
+ - A significant feature was completed that spans multiple issues
97
+
98
+ The `/knowledge` command provides a guided flow for creating docs.
99
+
52
100
  ## Always Update INDEX.md
53
101
 
54
- When adding any knowledge document, update `INDEX.md` so agents can discover it.
102
+ When adding or modifying any knowledge document:
103
+
104
+ 1. Add or update the entry in `INDEX.md`
105
+ 2. Set the date to the current date (never leave as `YYYY-MM-DD`)
106
+ 3. Write a concise description that helps agents assess relevance without loading the full doc
55
107
 
56
108
  ## Relationship to Specs
57
109
 
58
- - **Specs** (in Linear) = What we're building now
110
+ - **Specs** (in issue tracker) = What we're building now
59
111
  - **Knowledge** (here) = What we've learned that persists
60
112
 
61
113
  Specs reference knowledge. Knowledge grows from implementing specs.
62
-
@@ -0,0 +1,47 @@
1
+ ---
2
+ id: NNN
3
+ title: "[Decision title]"
4
+ status: proposed | accepted | deprecated | superseded
5
+ created: YYYY-MM-DD
6
+ lastUpdated: YYYY-MM-DD
7
+ relatedIssues: []
8
+ supersededBy: null
9
+ ---
10
+
11
+ # NNN — [Decision Title]
12
+
13
+ ## Status
14
+
15
+ [Proposed | Accepted | Deprecated | Superseded by NNN]
16
+
17
+ ## Context
18
+
19
+ [What is the problem or situation that requires a decision? Include relevant constraints, requirements, and prior art.]
20
+
21
+ ## Decision
22
+
23
+ [What was decided. Be specific — name the technology, pattern, or approach chosen.]
24
+
25
+ ## Alternatives Considered
26
+
27
+ | Option | Pros | Cons |
28
+ | --------------- | ------------ | -------------------- |
29
+ | [Chosen option] | [Advantages] | [Tradeoffs accepted] |
30
+ | [Alternative 1] | [Advantages] | [Why not chosen] |
31
+ | [Alternative 2] | [Advantages] | [Why not chosen] |
32
+
33
+ ## Consequences
34
+
35
+ **Positive:**
36
+
37
+ - [Benefit 1]
38
+ - [Benefit 2]
39
+
40
+ **Negative / Tradeoffs:**
41
+
42
+ - [Tradeoff 1]
43
+ - [Tradeoff 2]
44
+
45
+ **Follow-up actions:**
46
+
47
+ - [Action needed as a result of this decision]
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: "[Feature name]"
3
+ status: draft | current | deprecated
4
+ created: YYYY-MM-DD
5
+ lastUpdated: YYYY-MM-DD
6
+ relatedIssues: []
7
+ ---
8
+
9
+ # [Feature Name]
10
+
11
+ ## Overview
12
+
13
+ [What this feature does and why it exists. 2-3 sentences.]
14
+
15
+ ## Architecture
16
+
17
+ [How the feature is structured — key components, data flow, integration points.]
18
+
19
+ ## Key Files
20
+
21
+ | File | Purpose |
22
+ | -------------- | ------------------------------ |
23
+ | `path/to/file` | [What it does in this feature] |
24
+
25
+ ## Behaviors
26
+
27
+ [Important behaviors, edge cases, or business rules that aren't obvious from code alone.]
28
+
29
+ ## Configuration
30
+
31
+ [Any config, env vars, or feature flags that affect this feature.]
32
+
33
+ ## Related
34
+
35
+ - [Links to related issues, decisions, or other knowledge docs]
@@ -0,0 +1,25 @@
1
+ ---
2
+ title: "[Note title]"
3
+ category: discovery | gotcha | optimization | debugging | integration
4
+ created: YYYY-MM-DD
5
+ lastUpdated: YYYY-MM-DD
6
+ relatedIssues: []
7
+ ---
8
+
9
+ # [Note Title]
10
+
11
+ ## Summary
12
+
13
+ [One-paragraph summary of the discovery, gotcha, or learning.]
14
+
15
+ ## Details
16
+
17
+ [Full explanation. Include code examples, error messages, or configuration details as relevant.]
18
+
19
+ ## Impact
20
+
21
+ [What this affects — which parts of the system, which workflows, which developers need to know.]
22
+
23
+ ## Resolution / Workaround
24
+
25
+ [If applicable — what was done to address this, or how to work around it.]