@flydocs/cli 0.5.0-beta.6 → 0.5.0-beta.8
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/dist/cli.js +306 -237
- package/package.json +1 -1
- package/template/.claude/CLAUDE.md +1 -0
- package/template/.claude/agents/implementation-agent.md +1 -1
- package/template/.claude/agents/research-agent.md +1 -1
- package/template/.claude/commands/flydocs-setup.md +3 -3
- package/template/.claude/commands/flydocs-update.md +3 -4
- package/template/.claude/settings.json +0 -10
- package/template/.claude/skills/README.md +36 -41
- package/template/.claude/skills/flydocs-context7/SKILL.md +105 -0
- package/template/.claude/skills/flydocs-context7/cursor-rule.mdc +49 -0
- package/template/.claude/skills/flydocs-context7/scripts/context7.py +293 -0
- package/template/.cursor/hooks.json +0 -5
- package/template/.env.example +11 -2
- package/template/.flydocs/config.json +3 -8
- package/template/.flydocs/hooks/auto-approve.py +2 -2
- package/template/.flydocs/hooks/post-edit.py +13 -0
- package/template/.flydocs/templates/instructions.md +17 -69
- package/template/.flydocs/version +1 -1
- package/template/AGENTS.md +1 -0
- package/template/CHANGELOG.md +78 -0
- package/template/flydocs/README.md +36 -55
- package/template/flydocs/design-system/README.md +21 -13
- package/template/manifest.json +5 -16
- package/template/.cursor/mcp.json +0 -16
- package/template/.flydocs/hooks/prefer-scripts.py +0 -89
package/template/CHANGELOG.md
CHANGED
|
@@ -7,9 +7,62 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [0.5.0-beta.8] — 2026-02-22
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Context7 documentation skill** (`flydocs-context7`) — stdlib-only Python script
|
|
15
|
+
that calls the Context7 REST API to fetch up-to-date library documentation.
|
|
16
|
+
Replaces the removed Context7 MCP with a skill+script pattern.
|
|
17
|
+
- `context7.py search <library> [query]` — resolve library name to Context7 ID
|
|
18
|
+
- `context7.py docs <library_id> <query>` — fetch relevant documentation snippets
|
|
19
|
+
- Works without API key (anonymous, ~1,000 calls/month); optional
|
|
20
|
+
`CONTEXT7_API_KEY` in `.env` for higher rate limits
|
|
21
|
+
- Auto-approved by hook for seamless agent invocation
|
|
22
|
+
- Cursor rule included for cross-IDE support
|
|
23
|
+
- **Context7 API key** in `.env.example` — optional configuration for higher rate limits
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- `.env.example` — corrected "Figma MCP" reference to "flydocs-figma skill"
|
|
28
|
+
|
|
29
|
+
## [0.5.0-beta.7] — 2026-02-22
|
|
30
|
+
|
|
31
|
+
### Removed
|
|
32
|
+
|
|
33
|
+
- **All MCP references** — removed `.cursor/mcp.json`, `prefer-scripts.py` hook,
|
|
34
|
+
MCP config preservation in update flow, MCP section in instructions template.
|
|
35
|
+
Skills fully replace MCPs as the FlyDocs architecture.
|
|
36
|
+
- **Phantom skills** — removed references to `implementation-flow`, `review-workflow`,
|
|
37
|
+
`spec-templates` skills that were never shipped.
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- **Command injection** (`connect.ts`) — replaced `execSync` subprocess with native
|
|
42
|
+
`fetch()` for Linear API key validation.
|
|
43
|
+
- **Version comparison** — pre-release versions (e.g. `0.5.0-beta.3`) now compare
|
|
44
|
+
correctly instead of returning NaN.
|
|
45
|
+
- **Auto-approve hook** — tightened regex to anchor script paths, preventing potential
|
|
46
|
+
pattern-matching bypasses.
|
|
47
|
+
- **Post-edit hook** — added path traversal validation using `os.path.realpath()`.
|
|
48
|
+
- **Post-install scripts** — switched from `execSync` to `execFileSync` for subprocess safety.
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- **Stack detection** — now reads `flydocs/context/project.md` in addition to
|
|
53
|
+
`package.json` for declared stack frameworks.
|
|
54
|
+
- **Community skills on update** — filters already-installed skills before prompting.
|
|
55
|
+
- **Cloud exposure** — `.env.example` marked as cloud tier only, `flydocs/README.md`
|
|
56
|
+
rewritten as tier-generic, config defaults changed to `tier: "local"`.
|
|
57
|
+
- **Deprecated cleanup** — `.cursor/mcp.json` and `prefer-scripts.py` added to
|
|
58
|
+
deprecated files list for automatic cleanup on update.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
10
62
|
## [0.4.0] — 2026-02-18
|
|
11
63
|
|
|
12
64
|
### Added
|
|
65
|
+
|
|
13
66
|
- **Context Graph skill** (`flydocs-context-graph`) — relationship-aware knowledge
|
|
14
67
|
graph that connects skills, ADRs, issues, modules, and sessions. Implemented as
|
|
15
68
|
ADR-006 across five phases:
|
|
@@ -32,12 +85,14 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
32
85
|
graph automatically.
|
|
33
86
|
|
|
34
87
|
### Changed
|
|
88
|
+
|
|
35
89
|
- **Session wrap procedure** — `session.md` now includes a step to record session
|
|
36
90
|
outcomes in the context graph via `graph_session.py`. Skips silently if not installed.
|
|
37
91
|
- **Session staleness policy** — session nodes within 7 days get full weight, linear
|
|
38
92
|
decay to 30 days, then excluded from context.
|
|
39
93
|
|
|
40
94
|
### Migration
|
|
95
|
+
|
|
41
96
|
- **`.gitignore` update** — `flydocs/context/graph.json` is automatically added to
|
|
42
97
|
`.gitignore` during update if missing. The graph is gitignored because it contains
|
|
43
98
|
session-specific data and can be rebuilt from sources.
|
|
@@ -47,6 +102,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
47
102
|
## [0.3.10] — 2026-02-17
|
|
48
103
|
|
|
49
104
|
### Fixed
|
|
105
|
+
|
|
50
106
|
- **API null data crash** (FLY-178) — `flydocs_api.py` now normalizes `null` data
|
|
51
107
|
responses to empty dict before returning. Fixes `AttributeError` crashes in all
|
|
52
108
|
20+ scripts when Linear returns API errors. `create_issue.py` also retries without
|
|
@@ -65,6 +121,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
65
121
|
## [0.3.9] — 2026-02-17
|
|
66
122
|
|
|
67
123
|
### Added
|
|
124
|
+
|
|
68
125
|
- **Skill search and install CLI** (ENG-443) — `flydocs skills` subcommand with
|
|
69
126
|
`search`, `add`, `remove`, and `list` operations. Search the curated community
|
|
70
127
|
skills catalog, install from known names or GitHub repo references, and manage
|
|
@@ -81,6 +138,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
81
138
|
## [0.3.8] — 2026-02-14
|
|
82
139
|
|
|
83
140
|
### Added
|
|
141
|
+
|
|
84
142
|
- **`create_issue.py --description-file` and stdin** — both cloud and local tiers now
|
|
85
143
|
accept `--description-file PATH` or piped stdin for issue descriptions. Eliminates
|
|
86
144
|
the two-step create + update_description workaround for long descriptions.
|
|
@@ -92,6 +150,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
92
150
|
## [0.3.7] — 2026-02-11
|
|
93
151
|
|
|
94
152
|
### Added
|
|
153
|
+
|
|
95
154
|
- **Skill manifest generator** (ENG-442) — `generate_manifest.py` scans SKILL.md
|
|
96
155
|
frontmatter and produces a compressed skills index table. Injected into CLAUDE.md
|
|
97
156
|
and AGENTS.md between `<!-- flydocs:skills-manifest -->` markers. Bridges skill
|
|
@@ -104,12 +163,14 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
104
163
|
## [0.3.6] — 2026-02-10
|
|
105
164
|
|
|
106
165
|
### Added
|
|
166
|
+
|
|
107
167
|
- **Milestone, project, and dueDate in issue output** — `list_issues.py` now returns
|
|
108
168
|
`milestone`, `milestoneId`, `milestoneSortOrder`, `project`, `projectId`, and `dueDate`
|
|
109
169
|
for every issue. `get_issue.py` returns the same fields (minus `milestoneSortOrder`).
|
|
110
170
|
Enables milestone-grouped dashboards and priority-based session planning.
|
|
111
171
|
|
|
112
172
|
### Changed
|
|
173
|
+
|
|
113
174
|
- **Session start workflow rewritten** — `session.md` now instructs agents to group issues
|
|
114
175
|
by milestone (in milestone order), identify the current milestone, suggest a starting point
|
|
115
176
|
based on priority cascade (blocked → in-progress → due soon → highest priority in current
|
|
@@ -117,6 +178,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
117
178
|
the product scope.
|
|
118
179
|
|
|
119
180
|
### Fixed
|
|
181
|
+
|
|
120
182
|
- **`create_milestone.py` missing projectId** — `ProjectMilestoneCreateInput` requires a
|
|
121
183
|
`projectId`. Script now defaults to first `activeProject` from config, with `--project`
|
|
122
184
|
flag to override.
|
|
@@ -126,10 +188,12 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
126
188
|
## [0.3.5] — 2026-02-10
|
|
127
189
|
|
|
128
190
|
### Added
|
|
191
|
+
|
|
129
192
|
- **`list_projects.py` product scope** (ENG-475) — now respects `workspace.activeProjects`
|
|
130
193
|
config. `--all` bypasses product scope to show all team projects.
|
|
131
194
|
|
|
132
195
|
### Fixed
|
|
196
|
+
|
|
133
197
|
- **`list_projects.py` 400 error** (ENG-474) — state filter was using nested
|
|
134
198
|
`{type: {nin: [...]}}` instead of direct `StringComparator` `{nin: [...]}`.
|
|
135
199
|
Both `--active` (started only) and default (excludes completed/canceled) now work.
|
|
@@ -143,6 +207,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
143
207
|
## [0.3.4] — 2026-02-10
|
|
144
208
|
|
|
145
209
|
### Added
|
|
210
|
+
|
|
146
211
|
- **`list_issues.py --milestone` filter** — filter issues by project milestone ID.
|
|
147
212
|
Get milestone IDs from `list_milestones.py`, then pass to `list_issues.py --milestone <ID>`
|
|
148
213
|
to see all issues within a specific milestone.
|
|
@@ -152,6 +217,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
152
217
|
## [0.3.3] — 2026-02-10
|
|
153
218
|
|
|
154
219
|
### Fixed
|
|
220
|
+
|
|
155
221
|
- **Shell escaping in `update_description.py`** — descriptions with apostrophes,
|
|
156
222
|
parentheses, quotes, and other shell metacharacters no longer break when passed
|
|
157
223
|
via `--text`. Scripts now accept stdin as input, allowing safe heredoc piping:
|
|
@@ -164,6 +230,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
164
230
|
## [0.3.2] — 2026-02-09
|
|
165
231
|
|
|
166
232
|
### Fixed
|
|
233
|
+
|
|
167
234
|
- **API connection reliability** — reduced socket timeout from 30s to 10s and increased
|
|
168
235
|
max retries from 3 to 5. Resolves intermittent hangs caused by DNS returning unreachable
|
|
169
236
|
Cloudflare edge IPs. Scripts now fail over to a working IP within seconds instead of
|
|
@@ -176,11 +243,13 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
176
243
|
## [0.3.1] — 2026-02-08
|
|
177
244
|
|
|
178
245
|
### Fixed
|
|
246
|
+
|
|
179
247
|
- **`list_issues.py` product scope** — scoping via `activeProjects` and `product.labelIds`
|
|
180
248
|
now applies regardless of `--active` or `--status` flags. Previously, these flags
|
|
181
249
|
bypassed product scope entirely, returning all team issues.
|
|
182
250
|
|
|
183
251
|
### Added
|
|
252
|
+
|
|
184
253
|
- **`build_product_scope()` API helper** — new method on `FlyDocsClient` implements the
|
|
185
254
|
product scope cascade: `activeProjects` → `product.labelIds` → team-wide.
|
|
186
255
|
- **Multiple `activeProjects` support** — `list_issues.py` now uses OR logic when
|
|
@@ -193,6 +262,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
193
262
|
## [0.3.0] — 2026-02-08
|
|
194
263
|
|
|
195
264
|
### Added
|
|
265
|
+
|
|
196
266
|
- **`update_issue.py` bulk update script** — set multiple fields (priority, estimate,
|
|
197
267
|
assignee, state, description, comment) in a single API call instead of separate scripts.
|
|
198
268
|
- **`list_issues.py --active` flag** — returns all non-terminal issues (excludes Done,
|
|
@@ -204,12 +274,14 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
204
274
|
cached within each script invocation to reduce redundant API calls.
|
|
205
275
|
|
|
206
276
|
### Changed
|
|
277
|
+
|
|
207
278
|
- **`transition.py` optimized** — combined state update and cycle assignment into a
|
|
208
279
|
single `issueUpdate` mutation (was two separate calls for IMPLEMENTING transitions).
|
|
209
280
|
- **Session start efficiency** — single `list_issues.py --active` call replaces
|
|
210
281
|
per-status queries. Issues grouped by status in response.
|
|
211
282
|
|
|
212
283
|
### Removed
|
|
284
|
+
|
|
213
285
|
- **`status_summary.py`** — retired from cloud mechanism. Use `list_issues.py --active`
|
|
214
286
|
and group results by the status field instead.
|
|
215
287
|
|
|
@@ -218,6 +290,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
218
290
|
## [0.2.1] — 2026-02-07
|
|
219
291
|
|
|
220
292
|
### Fixed
|
|
293
|
+
|
|
221
294
|
- **Commands not fully populating** — changed from additive `cp` to clear-then-copy
|
|
222
295
|
for `.claude/commands/` and `.cursor/commands/` directories.
|
|
223
296
|
- **`docflow-core.mdc` not cleaned up** — added to deprecated cursor rules list.
|
|
@@ -227,6 +300,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
227
300
|
synced with version file.
|
|
228
301
|
|
|
229
302
|
### Added
|
|
303
|
+
|
|
230
304
|
- **`--force` flag** — force update even when versions match.
|
|
231
305
|
- **Old cursor rule directories and commands** added to deprecated cleanup.
|
|
232
306
|
|
|
@@ -235,6 +309,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
235
309
|
## [0.2.0] — 2026-02-06
|
|
236
310
|
|
|
237
311
|
### Added
|
|
312
|
+
|
|
238
313
|
- **Scenario-aware setup command** — `/flydocs-setup` rewritten as a comprehensive
|
|
239
314
|
agent prompt handling three scenarios: New Project, DocFlow Migration, FlyDocs Update.
|
|
240
315
|
Includes proactive repo scanning for PRDs and existing documentation.
|
|
@@ -247,10 +322,12 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
247
322
|
pre-v1.0 artifacts: old skills, rules, hooks, and cursor rules.
|
|
248
323
|
|
|
249
324
|
### Changed
|
|
325
|
+
|
|
250
326
|
- **Version file synced with manifest** — `.flydocs/version` now matches
|
|
251
327
|
`manifest.json` version field (was out of sync in 0.1.0).
|
|
252
328
|
|
|
253
329
|
### Removed
|
|
330
|
+
|
|
254
331
|
- Orphaned hook scripts: `session-end.py`, `linear-auto-approve.py`
|
|
255
332
|
|
|
256
333
|
---
|
|
@@ -258,6 +335,7 @@ Versioning: [Semantic Versioning](https://semver.org/).
|
|
|
258
335
|
## [0.1.0] — 2026-01-15
|
|
259
336
|
|
|
260
337
|
### Added
|
|
338
|
+
|
|
261
339
|
- Initial release of FlyDocs Core
|
|
262
340
|
- Workflow skill (`flydocs-workflow`) with full lifecycle stages
|
|
263
341
|
- Mechanism skills: `flydocs-cloud` (Linear API) and `flydocs-local` (file-based)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
# FlyDocs
|
|
1
|
+
# FlyDocs
|
|
2
2
|
|
|
3
|
-
This project uses FlyDocs
|
|
4
|
-
|
|
3
|
+
This project uses FlyDocs - a hybrid workflow where:
|
|
4
|
+
|
|
5
|
+
- **Work items (specs)** live in your issue tracker (local files or cloud provider)
|
|
5
6
|
- **Project understanding** lives locally in this directory
|
|
6
7
|
- **Framework config, rules & templates** live in `.flydocs/`
|
|
7
8
|
|
|
@@ -12,6 +13,7 @@ This project uses FlyDocs Cloud - a hybrid workflow where:
|
|
|
12
13
|
**This `flydocs/` directory is your project's evolving knowledge base.**
|
|
13
14
|
|
|
14
15
|
It grows alongside your project:
|
|
16
|
+
|
|
15
17
|
- Update `context/` as your vision, stack, and standards evolve
|
|
16
18
|
- Add to `knowledge/` as you make decisions and learn things
|
|
17
19
|
- Expand `patterns/` as you discover project-specific conventions
|
|
@@ -25,7 +27,7 @@ FlyDocs will **never overwrite** these files during updates - they're yours to m
|
|
|
25
27
|
|
|
26
28
|
```
|
|
27
29
|
.flydocs/ # FRAMEWORK (replaced on FlyDocs update)
|
|
28
|
-
├── config.json #
|
|
30
|
+
├── config.json # Tier, provider settings, workspace config
|
|
29
31
|
├── version # For upgrade detection
|
|
30
32
|
├── rules/ # Workflow rules
|
|
31
33
|
├── scripts/ # Automation scripts
|
|
@@ -34,9 +36,7 @@ FlyDocs will **never overwrite** these files during updates - they're yours to m
|
|
|
34
36
|
|
|
35
37
|
flydocs/ # PROJECT CONTENT (evolves with project)
|
|
36
38
|
├── context/ # Project fundamentals
|
|
37
|
-
│ ├──
|
|
38
|
-
│ ├── stack.md # Tech stack, architecture (update as it changes)
|
|
39
|
-
│ ├── standards.md # Code conventions (update as they mature)
|
|
39
|
+
│ ├── project.md # Vision, stack, scope (update as it evolves)
|
|
40
40
|
│ └── patterns/ # Project-specific patterns (grow over time)
|
|
41
41
|
│
|
|
42
42
|
├── design-system/ # Design tokens (if using /design-setup)
|
|
@@ -59,19 +59,11 @@ flydocs/ # PROJECT CONTENT (evolves with project)
|
|
|
59
59
|
└── hooks.json # Cursor hooks
|
|
60
60
|
|
|
61
61
|
.claude/ # Claude Code integration
|
|
62
|
+
├── CLAUDE.md # Claude Code instructions
|
|
62
63
|
├── agents/ # Subagent definitions
|
|
63
64
|
├── skills/ # Workflow skills
|
|
65
|
+
├── commands/ # Slash commands
|
|
64
66
|
└── settings.json # Claude hooks
|
|
65
|
-
│ ├── pm-agent/RULE.md # Planning triggers
|
|
66
|
-
│ ├── implementation-agent/RULE.md # Build triggers
|
|
67
|
-
│ ├── qe-agent/RULE.md # Testing triggers
|
|
68
|
-
│ ├── linear-integration/RULE.md
|
|
69
|
-
│ └── ...
|
|
70
|
-
└── commands/ # Slash commands
|
|
71
|
-
|
|
72
|
-
.claude/
|
|
73
|
-
├── CLAUDE.md # Claude Code instructions
|
|
74
|
-
└── commands/ # Symlinks to .cursor/commands/
|
|
75
67
|
```
|
|
76
68
|
|
|
77
69
|
**Note:** Content folder name is configurable via `paths.content` in `.flydocs/config.json`.
|
|
@@ -82,51 +74,38 @@ flydocs/ # PROJECT CONTENT (evolves with project)
|
|
|
82
74
|
|
|
83
75
|
### LOCAL (This Directory)
|
|
84
76
|
|
|
85
|
-
| Content
|
|
86
|
-
|
|
87
|
-
| Project overview | `context/
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
| Notes | `knowledge/notes/` | Learnings, gotchas |
|
|
93
|
-
| Product docs | `knowledge/product/` | Personas, user flows |
|
|
77
|
+
| Content | Location | Purpose |
|
|
78
|
+
| ---------------- | ---------------------- | -------------------- |
|
|
79
|
+
| Project overview | `context/project.md` | Vision, goals, scope |
|
|
80
|
+
| ADRs | `knowledge/decisions/` | Why we made choices |
|
|
81
|
+
| Feature docs | `knowledge/features/` | How features work |
|
|
82
|
+
| Notes | `knowledge/notes/` | Learnings, gotchas |
|
|
83
|
+
| Product docs | `knowledge/product/` | Personas, user flows |
|
|
94
84
|
|
|
95
85
|
**Why local?** Agent needs instant access, changes with code, developers need it in IDE.
|
|
96
86
|
|
|
97
|
-
###
|
|
87
|
+
### ISSUE TRACKER (Local or Cloud)
|
|
98
88
|
|
|
99
|
-
| Content
|
|
100
|
-
|
|
101
|
-
| Specs
|
|
102
|
-
| Status
|
|
103
|
-
| Priorities
|
|
104
|
-
| Assignments |
|
|
105
|
-
|
|
|
106
|
-
| Progress | Comments | Decision log, impl notes |
|
|
89
|
+
| Content | Purpose |
|
|
90
|
+
| ----------- | ---------------------------------- |
|
|
91
|
+
| Specs | Features, bugs, chores, ideas |
|
|
92
|
+
| Status | BACKLOG → DONE progression |
|
|
93
|
+
| Priorities | Urgent, High, Medium, Low |
|
|
94
|
+
| Assignments | Who's working on what |
|
|
95
|
+
| Progress | Decision log, implementation notes |
|
|
107
96
|
|
|
108
|
-
**
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## No Longer Exists
|
|
113
|
-
|
|
114
|
-
These are **replaced by Linear**:
|
|
115
|
-
|
|
116
|
-
- ~~`flydocs/specs/`~~ → Linear issues
|
|
117
|
-
- ~~`flydocs/INDEX.md`~~ → Linear issue list
|
|
118
|
-
- ~~`flydocs/ACTIVE.md`~~ → Linear "In Progress" view
|
|
119
|
-
- ~~`flydocs/specs/assets/`~~ → Linear attachments
|
|
97
|
+
**Local tier:** Issues stored as files in `flydocs/issues/`.
|
|
98
|
+
**Cloud tier:** Issues stored in your provider (e.g., Linear). Enables team collaboration, stakeholder visibility, and AI agent integration.
|
|
120
99
|
|
|
121
100
|
---
|
|
122
101
|
|
|
123
102
|
## Quick Commands
|
|
124
103
|
|
|
125
104
|
```
|
|
126
|
-
/start-session - Check
|
|
127
|
-
/capture - Create new
|
|
128
|
-
/new-project - Create project with product label/icon
|
|
129
|
-
/implement - Pick up issue
|
|
105
|
+
/start-session - Check issue status, plan work
|
|
106
|
+
/capture - Create new issue
|
|
107
|
+
/new-project - Create project with product label/icon (cloud tier)
|
|
108
|
+
/implement - Pick up issue for implementation
|
|
130
109
|
/validate - Test implementation
|
|
131
110
|
/close - Move issue to Done
|
|
132
111
|
/flydocs-update - Sync rules from source repo
|
|
@@ -144,10 +123,12 @@ If you have a Figma design system with tokens, run `/design-setup` to enable enh
|
|
|
144
123
|
```
|
|
145
124
|
|
|
146
125
|
This creates:
|
|
126
|
+
|
|
147
127
|
- `flydocs/design-system/token-mapping.md` - Your Figma → code translations
|
|
148
128
|
- `flydocs/design-system/component-patterns.md` - Your reusable components
|
|
149
129
|
|
|
150
130
|
And updates `.flydocs/config.json` with:
|
|
131
|
+
|
|
151
132
|
```json
|
|
152
133
|
{
|
|
153
134
|
"designSystem": {
|
|
@@ -168,15 +149,15 @@ And updates `.flydocs/config.json` with:
|
|
|
168
149
|
## Configuration
|
|
169
150
|
|
|
170
151
|
See `.flydocs/config.json` for:
|
|
152
|
+
|
|
171
153
|
- FlyDocs version
|
|
154
|
+
- `tier` - "local" (free) or "cloud" (connected to provider)
|
|
172
155
|
- `paths.content` - This folder name (default: "flydocs")
|
|
173
|
-
- `provider.
|
|
174
|
-
- `workspace.activeProjects` - Array of active project IDs
|
|
156
|
+
- `provider.type` - Issue tracker provider (null for local, "linear" for cloud)
|
|
157
|
+
- `workspace.activeProjects` - Array of active project IDs (cloud tier)
|
|
175
158
|
- `workspace.product` - Product identity (name, labelIds, icon, color)
|
|
176
159
|
- `statusMapping` - Workflow state names
|
|
177
160
|
|
|
178
|
-
See `.cursor/mcp.json` for MCP server configuration.
|
|
179
|
-
|
|
180
161
|
---
|
|
181
162
|
|
|
182
163
|
## More Information
|
|
@@ -19,7 +19,8 @@ When using the `flydocs-figma` skill to extract designs, the AI needs to know:
|
|
|
19
19
|
### 1. Run /design-setup
|
|
20
20
|
|
|
21
21
|
The `/design-setup` command will:
|
|
22
|
-
|
|
22
|
+
|
|
23
|
+
- Connect to your Figma file via the Figma skill
|
|
23
24
|
- Extract design tokens
|
|
24
25
|
- Generate initial mappings
|
|
25
26
|
- Create component pattern documentation
|
|
@@ -31,8 +32,8 @@ Edit `token-mapping.md` to define how Figma tokens translate to your code:
|
|
|
31
32
|
```markdown
|
|
32
33
|
## Colors
|
|
33
34
|
|
|
34
|
-
| Figma Token | CSS Variable
|
|
35
|
-
|
|
35
|
+
| Figma Token | CSS Variable | Tailwind Class |
|
|
36
|
+
| ----------- | ------------------- | -------------- |
|
|
36
37
|
| Primary/500 | --color-primary-500 | bg-primary-500 |
|
|
37
38
|
| Neutral/100 | --color-neutral-100 | bg-neutral-100 |
|
|
38
39
|
```
|
|
@@ -41,22 +42,26 @@ Edit `token-mapping.md` to define how Figma tokens translate to your code:
|
|
|
41
42
|
|
|
42
43
|
Edit `component-patterns.md` to map Figma components to code:
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
````markdown
|
|
45
46
|
## Button
|
|
46
47
|
|
|
47
48
|
**Figma Component:** `Components/Button/Primary`
|
|
48
49
|
|
|
49
50
|
**Code Pattern:**
|
|
51
|
+
|
|
50
52
|
```tsx
|
|
51
53
|
<Button variant="primary" size="md">
|
|
52
54
|
{children}
|
|
53
55
|
</Button>
|
|
54
56
|
```
|
|
57
|
+
````
|
|
55
58
|
|
|
56
59
|
**Variants:**
|
|
60
|
+
|
|
57
61
|
- Primary → variant="primary"
|
|
58
62
|
- Secondary → variant="secondary"
|
|
59
63
|
- Ghost → variant="ghost"
|
|
64
|
+
|
|
60
65
|
```
|
|
61
66
|
|
|
62
67
|
---
|
|
@@ -64,15 +69,17 @@ Edit `component-patterns.md` to map Figma components to code:
|
|
|
64
69
|
## File Structure
|
|
65
70
|
|
|
66
71
|
```
|
|
72
|
+
|
|
67
73
|
flydocs/design-system/
|
|
68
|
-
├── README.md
|
|
69
|
-
├── token-mapping.md
|
|
70
|
-
├── component-patterns.md
|
|
71
|
-
└── tokens/
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
├── README.md # This file
|
|
75
|
+
├── token-mapping.md # Figma token → code mapping
|
|
76
|
+
├── component-patterns.md # Figma component → code mapping
|
|
77
|
+
└── tokens/ # Optional: extracted token JSON
|
|
78
|
+
├── colors.json
|
|
79
|
+
├── spacing.json
|
|
80
|
+
└── typography.json
|
|
81
|
+
|
|
82
|
+
````
|
|
76
83
|
|
|
77
84
|
---
|
|
78
85
|
|
|
@@ -115,12 +122,13 @@ Add version notes to track design system evolution:
|
|
|
115
122
|
|
|
116
123
|
### v1.0 (2023-06)
|
|
117
124
|
- Initial design system
|
|
118
|
-
|
|
125
|
+
````
|
|
119
126
|
|
|
120
127
|
---
|
|
121
128
|
|
|
122
129
|
## Templates
|
|
123
130
|
|
|
124
131
|
See `.flydocs/templates/design-system/` for:
|
|
132
|
+
|
|
125
133
|
- `token-mapping.md` - Template for token documentation
|
|
126
134
|
- `component-patterns.md` - Template for component documentation
|
package/template/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.5.0-beta.
|
|
2
|
+
"version": "0.5.0-beta.8",
|
|
3
3
|
"description": "FlyDocs Core - Manifest of all managed files",
|
|
4
4
|
"repository": "github.com/plastrlab/flydocs-core",
|
|
5
5
|
|
|
@@ -18,9 +18,7 @@
|
|
|
18
18
|
".claude/skills/flydocs-figma",
|
|
19
19
|
".claude/skills/flydocs-estimates",
|
|
20
20
|
".claude/skills/flydocs-context-graph",
|
|
21
|
-
".claude/skills/
|
|
22
|
-
".claude/skills/review-workflow",
|
|
23
|
-
".claude/skills/spec-templates",
|
|
21
|
+
".claude/skills/flydocs-context7",
|
|
24
22
|
".flydocs/scripts",
|
|
25
23
|
".cursor/agents"
|
|
26
24
|
]
|
|
@@ -60,7 +58,6 @@
|
|
|
60
58
|
"paths": [
|
|
61
59
|
".env",
|
|
62
60
|
".env.local",
|
|
63
|
-
".cursor/mcp.json",
|
|
64
61
|
"flydocs/context/project.md",
|
|
65
62
|
"flydocs/knowledge/**",
|
|
66
63
|
"flydocs/design-system/**"
|
|
@@ -80,7 +77,6 @@
|
|
|
80
77
|
"issueLabels",
|
|
81
78
|
"statusMapping",
|
|
82
79
|
"detectedStack",
|
|
83
|
-
"mcp",
|
|
84
80
|
"skills",
|
|
85
81
|
"designSystem",
|
|
86
82
|
"aiLabor"
|
|
@@ -151,13 +147,11 @@
|
|
|
151
147
|
"flydocs-figma": ["SKILL.md", "references/"],
|
|
152
148
|
"flydocs-estimates": ["SKILL.md", "references/"],
|
|
153
149
|
"flydocs-context-graph": ["SKILL.md", "schema.md", "scripts/"],
|
|
154
|
-
"
|
|
155
|
-
"review-workflow": ["SKILL.md"],
|
|
156
|
-
"spec-templates": ["SKILL.md"]
|
|
150
|
+
"flydocs-context7": ["SKILL.md", "cursor-rule.mdc", "scripts/"]
|
|
157
151
|
}
|
|
158
152
|
},
|
|
159
153
|
".cursor": {
|
|
160
|
-
"root": ["hooks.json"
|
|
154
|
+
"root": ["hooks.json"],
|
|
161
155
|
"agents": [
|
|
162
156
|
"pm-agent.md",
|
|
163
157
|
"implementation-agent.md",
|
|
@@ -168,12 +162,7 @@
|
|
|
168
162
|
".flydocs": {
|
|
169
163
|
"root": ["config.json", "version", "CHANGELOG.md"],
|
|
170
164
|
"scripts": ["generate_manifest.py", "skill_manager.py"],
|
|
171
|
-
"hooks": [
|
|
172
|
-
"auto-approve.py",
|
|
173
|
-
"prefer-scripts.py",
|
|
174
|
-
"post-edit.py",
|
|
175
|
-
"prompt-submit.py"
|
|
176
|
-
],
|
|
165
|
+
"hooks": ["auto-approve.py", "post-edit.py", "prompt-submit.py"],
|
|
177
166
|
"templates": ["bug.md", "chore.md", "feature.md", "idea.md"]
|
|
178
167
|
},
|
|
179
168
|
"flydocs": {
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://cursor.sh/schemas/mcp.json",
|
|
3
|
-
"mcpServers": {
|
|
4
|
-
"linear": {
|
|
5
|
-
"command": "npx",
|
|
6
|
-
"args": ["-y", "@linear/mcp-server"],
|
|
7
|
-
"env": {
|
|
8
|
-
"LINEAR_API_KEY": "${LINEAR_API_KEY}"
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
|
-
"context7": {
|
|
12
|
-
"command": "npx",
|
|
13
|
-
"args": ["-y", "@anthropics/context7-mcp"]
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
PreToolUse Hook: Guide AI to prefer scripts over MCP
|
|
4
|
-
|
|
5
|
-
Triggers before mcp__linear tool calls and provides guidance
|
|
6
|
-
to use the bundled Python scripts instead.
|
|
7
|
-
|
|
8
|
-
Soft guidance — doesn't block the MCP call, but reminds the AI
|
|
9
|
-
that scripts exist and are preferred.
|
|
10
|
-
|
|
11
|
-
Exit codes:
|
|
12
|
-
- 0 with JSON: Continue with guidance message
|
|
13
|
-
- 0 with no output: No opinion, continue normally
|
|
14
|
-
- 2: Block (not used)
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
import sys
|
|
18
|
-
import json
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
# Mapping of MCP operations to equivalent mechanism scripts
|
|
22
|
-
SCRIPT_ALTERNATIVES = {
|
|
23
|
-
"create_issue": "create_issue.py --title '...' --type feature",
|
|
24
|
-
"update_issue": "transition.py ISSUE_ID STATUS 'comment'",
|
|
25
|
-
"get_issue": "get_issue.py ISSUE_ID",
|
|
26
|
-
"list_issues": "list_issues.py --status STATUS",
|
|
27
|
-
"create_comment": "comment.py ISSUE_ID 'message'",
|
|
28
|
-
"update_issue_state": "transition.py ISSUE_ID STATUS 'comment'",
|
|
29
|
-
"list_projects": "list_projects.py --active",
|
|
30
|
-
"create_project": "create_project.py --name '...'",
|
|
31
|
-
"list_workflow_states": "list_states.py",
|
|
32
|
-
"list_labels": "list_labels.py",
|
|
33
|
-
"assign_issue": "assign.py ISSUE_ID 'email'",
|
|
34
|
-
"set_issue_priority": "priority.py ISSUE_ID LEVEL",
|
|
35
|
-
"set_issue_estimate": "estimate.py ISSUE_ID POINTS",
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def get_script_suggestion(tool_name: str) -> str | None:
|
|
40
|
-
"""Get the equivalent script for an MCP operation."""
|
|
41
|
-
operation = tool_name.replace("mcp__linear__", "").replace("mcp__linear.", "")
|
|
42
|
-
return SCRIPT_ALTERNATIVES.get(operation)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def main():
|
|
46
|
-
try:
|
|
47
|
-
input_data = json.load(sys.stdin)
|
|
48
|
-
except (json.JSONDecodeError, EOFError):
|
|
49
|
-
sys.exit(0)
|
|
50
|
-
|
|
51
|
-
tool_name = input_data.get('tool_name', '')
|
|
52
|
-
|
|
53
|
-
if not tool_name.startswith('mcp__linear'):
|
|
54
|
-
# No opinion — exit 0 with no output to avoid hook error
|
|
55
|
-
sys.exit(0)
|
|
56
|
-
|
|
57
|
-
script_suggestion = get_script_suggestion(tool_name)
|
|
58
|
-
|
|
59
|
-
if script_suggestion:
|
|
60
|
-
guidance = {
|
|
61
|
-
"decision": "continue",
|
|
62
|
-
"message": f"""**Reminder:** FlyDocs prefers Python scripts over MCP for issue operations.
|
|
63
|
-
|
|
64
|
-
Equivalent script (in the active mechanism skill):
|
|
65
|
-
```bash
|
|
66
|
-
python3 .claude/skills/flydocs-cloud/scripts/{script_suggestion}
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Scripts are:
|
|
70
|
-
- Auto-approved (no permission prompt)
|
|
71
|
-
- Config-aware (reads team ID, status mappings)
|
|
72
|
-
- Pattern-enforced (mandatory comments on transitions)
|
|
73
|
-
|
|
74
|
-
You may continue with MCP if the script doesn't cover your use case."""
|
|
75
|
-
}
|
|
76
|
-
else:
|
|
77
|
-
guidance = {
|
|
78
|
-
"decision": "continue",
|
|
79
|
-
"message": """**Reminder:** Check if the active mechanism skill has a script for this operation.
|
|
80
|
-
Read the mechanism skill's SKILL.md for the full script catalog.
|
|
81
|
-
Scripts are preferred over MCP for performance and auto-approval."""
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
print(json.dumps(guidance))
|
|
85
|
-
sys.exit(0)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if __name__ == "__main__":
|
|
89
|
-
main()
|