@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.
- package/README.md +6 -0
- package/dist/cli.js +1553 -414
- package/package.json +1 -1
- package/template/.claude/CLAUDE.md +11 -9
- package/template/.claude/agents/implementation-agent.md +0 -1
- package/template/.claude/agents/pm-agent.md +0 -1
- package/template/.claude/agents/research-agent.md +0 -1
- package/template/.claude/agents/review-agent.md +0 -1
- package/template/.claude/commands/flydocs-setup.md +202 -35
- package/template/.claude/commands/flydocs-upgrade.md +342 -0
- package/template/.claude/commands/knowledge.md +61 -0
- package/template/.claude/skills/flydocs-cloud/SKILL.md +66 -39
- package/template/.claude/skills/flydocs-cloud/cursor-rule.mdc +5 -5
- package/template/.claude/skills/flydocs-cloud/scripts/assign.py +17 -27
- package/template/.claude/skills/flydocs-cloud/scripts/assign_cycle.py +14 -30
- package/template/.claude/skills/flydocs-cloud/scripts/assign_milestone.py +10 -32
- package/template/.claude/skills/flydocs-cloud/scripts/comment.py +15 -25
- package/template/.claude/skills/flydocs-cloud/scripts/create_issue.py +42 -59
- package/template/.claude/skills/flydocs-cloud/scripts/create_milestone.py +26 -37
- package/template/.claude/skills/flydocs-cloud/scripts/create_project.py +24 -31
- package/template/.claude/skills/flydocs-cloud/scripts/create_team.py +39 -0
- package/template/.claude/skills/flydocs-cloud/scripts/delete_milestone.py +21 -0
- package/template/.claude/skills/flydocs-cloud/scripts/estimate.py +17 -22
- package/template/.claude/skills/flydocs-cloud/scripts/flydocs_api.py +113 -169
- package/template/.claude/skills/flydocs-cloud/scripts/get_estimate_scale.py +23 -0
- package/template/.claude/skills/flydocs-cloud/scripts/get_issue.py +6 -59
- package/template/.claude/skills/flydocs-cloud/scripts/link.py +16 -35
- package/template/.claude/skills/flydocs-cloud/scripts/list_cycles.py +21 -28
- package/template/.claude/skills/flydocs-cloud/scripts/list_issues.py +16 -77
- package/template/.claude/skills/flydocs-cloud/scripts/list_labels.py +19 -0
- package/template/.claude/skills/flydocs-cloud/scripts/list_milestones.py +21 -33
- package/template/.claude/skills/flydocs-cloud/scripts/list_projects.py +24 -38
- package/template/.claude/skills/flydocs-cloud/scripts/list_providers.py +19 -0
- package/template/.claude/skills/flydocs-cloud/scripts/list_statuses.py +19 -0
- package/template/.claude/skills/flydocs-cloud/scripts/list_teams.py +19 -0
- package/template/.claude/skills/flydocs-cloud/scripts/priority.py +10 -19
- package/template/.claude/skills/flydocs-cloud/scripts/project_update.py +36 -50
- package/template/.claude/skills/flydocs-cloud/scripts/refresh_labels.py +87 -0
- package/template/.claude/skills/flydocs-cloud/scripts/set_identity.py +38 -0
- package/template/.claude/skills/flydocs-cloud/scripts/set_labels.py +68 -0
- package/template/.claude/skills/flydocs-cloud/scripts/set_preferences.py +49 -0
- package/template/.claude/skills/flydocs-cloud/scripts/set_provider.py +46 -0
- package/template/.claude/skills/flydocs-cloud/scripts/set_status_mapping.py +69 -0
- package/template/.claude/skills/flydocs-cloud/scripts/set_team.py +42 -0
- package/template/.claude/skills/flydocs-cloud/scripts/transition.py +11 -52
- package/template/.claude/skills/flydocs-cloud/scripts/update_description.py +16 -27
- package/template/.claude/skills/flydocs-cloud/scripts/update_issue.py +43 -54
- package/template/.claude/skills/flydocs-cloud/scripts/update_milestone.py +42 -0
- package/template/.claude/skills/flydocs-cloud/scripts/validate_setup.py +139 -0
- package/template/.claude/skills/flydocs-local/SKILL.md +1 -1
- package/template/.claude/skills/flydocs-local/scripts/assign.py +13 -4
- package/template/.claude/skills/flydocs-local/scripts/flydocs_api.py +5 -2
- package/template/.claude/skills/flydocs-workflow/SKILL.md +23 -18
- package/template/.claude/skills/flydocs-workflow/reference/comment-templates.md +1 -0
- package/template/.claude/skills/flydocs-workflow/reference/pr-workflow.md +105 -0
- package/template/.claude/skills/flydocs-workflow/reference/priority-estimates.md +37 -15
- package/template/.claude/skills/flydocs-workflow/session.md +24 -16
- package/template/.claude/skills/flydocs-workflow/stages/capture.md +8 -3
- package/template/.claude/skills/flydocs-workflow/stages/close.md +4 -3
- package/template/.claude/skills/flydocs-workflow/stages/implement.md +28 -4
- package/template/.claude/skills/flydocs-workflow/stages/refine.md +20 -4
- package/template/.claude/skills/flydocs-workflow/stages/review.md +14 -2
- package/template/.env.example +16 -7
- package/template/.flydocs/config.json +4 -18
- package/template/.flydocs/hooks/prompt-submit.py +27 -4
- package/template/.flydocs/version +1 -1
- package/template/AGENTS.md +8 -8
- package/template/CHANGELOG.md +183 -0
- package/template/flydocs/knowledge/INDEX.md +38 -53
- package/template/flydocs/knowledge/README.md +60 -9
- package/template/flydocs/knowledge/templates/decision.md +47 -0
- package/template/flydocs/knowledge/templates/feature.md +35 -0
- package/template/flydocs/knowledge/templates/note.md +25 -0
- package/template/manifest.json +12 -4
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
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
|
|
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
|
-
|
|
178
|
-
|
|
179
|
-
|
|
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.
|
|
1
|
+
0.6.0-alpha.10
|
package/template/AGENTS.md
CHANGED
|
@@ -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
|
|
96
|
-
| ----------------- |
|
|
97
|
-
| flydocs-cloud | create issue, transition, comment, list issues, assign, update description, update issue, project update,
|
|
98
|
-
| flydocs-context7 | context7, library docs, documentation lookup, framework docs, package docs, API reference
|
|
99
|
-
| flydocs-estimates | estimate, cost, token usage, API cost, labor estimate, sizing, effort
|
|
100
|
-
| flydocs-figma | Figma, design, screenshot, token mapping, component from design, pixel-perfect, design system
|
|
101
|
-
| flydocs-local | create issue, transition, comment, list issues, assign, update description, status summary, local
|
|
102
|
-
| flydocs-workflow | capture, refine, activate, implement, review, validate, close, session, workflow, transition, status, issue
|
|
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
|
|
package/template/CHANGELOG.md
CHANGED
|
@@ -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
|
|
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
|
|
13
|
-
|
|
14
|
-
| Decisions | 0
|
|
15
|
-
| Features
|
|
16
|
-
| Notes
|
|
17
|
-
| Product
|
|
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
|
-
##
|
|
22
|
+
## Decisions (ADRs)
|
|
22
23
|
|
|
23
|
-
Architecture Decision Records
|
|
24
|
+
Architecture Decision Records — why we made key technical choices.
|
|
24
25
|
|
|
25
|
-
| ID
|
|
26
|
-
|
|
27
|
-
| -
|
|
26
|
+
| ID | Title | Status | Date |
|
|
27
|
+
| --- | ------------------------- | ------ | ---- |
|
|
28
|
+
| - | No decisions recorded yet | - | - |
|
|
28
29
|
|
|
29
30
|
<!-- Example:
|
|
30
|
-
| 001 | Use Convex for Backend | Accepted |
|
|
31
|
-
|
|
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
|
-
##
|
|
37
|
+
## Features
|
|
37
38
|
|
|
38
39
|
Documentation for complex features that need more than a spec.
|
|
39
40
|
|
|
40
|
-
| Feature | Description
|
|
41
|
-
|
|
42
|
-
| -
|
|
41
|
+
| Feature | Description | Last Updated |
|
|
42
|
+
| ------- | ------------------- | ------------ |
|
|
43
|
+
| - | No feature docs yet | - |
|
|
43
44
|
|
|
44
45
|
<!-- Example:
|
|
45
|
-
| auth-system | Complete auth flow documentation |
|
|
46
|
-
|
|
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
|
-
##
|
|
52
|
+
## Notes
|
|
52
53
|
|
|
53
54
|
Technical discoveries, gotchas, learnings.
|
|
54
55
|
|
|
55
|
-
| Topic | Description
|
|
56
|
-
|
|
57
|
-
| -
|
|
56
|
+
| Topic | Description | Added |
|
|
57
|
+
| ----- | ------------ | ----- |
|
|
58
|
+
| - | No notes yet | - |
|
|
58
59
|
|
|
59
60
|
<!-- Example:
|
|
60
|
-
| api-rate-limits | Third-party API quirks and workarounds |
|
|
61
|
-
|
|
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
|
-
##
|
|
67
|
+
## Product
|
|
67
68
|
|
|
68
69
|
User research and product documentation.
|
|
69
70
|
|
|
70
|
-
| Document
|
|
71
|
-
|
|
72
|
-
| personas.md
|
|
73
|
-
| user-flows.md | Key user journeys
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
|
10
|
-
├──
|
|
11
|
-
├──
|
|
12
|
-
├──
|
|
13
|
-
|
|
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
|
-
##
|
|
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
|
|
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
|
|
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.]
|