@flydocs/cli 0.5.0-beta.6 → 0.5.0-beta.7
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 +295 -237
- package/package.json +1 -1
- 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 +35 -41
- package/template/.cursor/hooks.json +0 -5
- package/template/.env.example +2 -1
- 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/flydocs/README.md +36 -55
- package/template/flydocs/design-system/README.md +21 -13
- package/template/manifest.json +4 -17
- package/template/.cursor/mcp.json +0 -16
- package/template/.flydocs/hooks/prefer-scripts.py +0 -89
|
@@ -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.7",
|
|
3
3
|
"description": "FlyDocs Core - Manifest of all managed files",
|
|
4
4
|
"repository": "github.com/plastrlab/flydocs-core",
|
|
5
5
|
|
|
@@ -18,9 +18,6 @@
|
|
|
18
18
|
".claude/skills/flydocs-figma",
|
|
19
19
|
".claude/skills/flydocs-estimates",
|
|
20
20
|
".claude/skills/flydocs-context-graph",
|
|
21
|
-
".claude/skills/implementation-flow",
|
|
22
|
-
".claude/skills/review-workflow",
|
|
23
|
-
".claude/skills/spec-templates",
|
|
24
21
|
".flydocs/scripts",
|
|
25
22
|
".cursor/agents"
|
|
26
23
|
]
|
|
@@ -60,7 +57,6 @@
|
|
|
60
57
|
"paths": [
|
|
61
58
|
".env",
|
|
62
59
|
".env.local",
|
|
63
|
-
".cursor/mcp.json",
|
|
64
60
|
"flydocs/context/project.md",
|
|
65
61
|
"flydocs/knowledge/**",
|
|
66
62
|
"flydocs/design-system/**"
|
|
@@ -80,7 +76,6 @@
|
|
|
80
76
|
"issueLabels",
|
|
81
77
|
"statusMapping",
|
|
82
78
|
"detectedStack",
|
|
83
|
-
"mcp",
|
|
84
79
|
"skills",
|
|
85
80
|
"designSystem",
|
|
86
81
|
"aiLabor"
|
|
@@ -150,14 +145,11 @@
|
|
|
150
145
|
"flydocs-local": ["SKILL.md", "cursor-rule.mdc", "scripts/"],
|
|
151
146
|
"flydocs-figma": ["SKILL.md", "references/"],
|
|
152
147
|
"flydocs-estimates": ["SKILL.md", "references/"],
|
|
153
|
-
"flydocs-context-graph": ["SKILL.md", "schema.md", "scripts/"]
|
|
154
|
-
"implementation-flow": ["SKILL.md"],
|
|
155
|
-
"review-workflow": ["SKILL.md"],
|
|
156
|
-
"spec-templates": ["SKILL.md"]
|
|
148
|
+
"flydocs-context-graph": ["SKILL.md", "schema.md", "scripts/"]
|
|
157
149
|
}
|
|
158
150
|
},
|
|
159
151
|
".cursor": {
|
|
160
|
-
"root": ["hooks.json"
|
|
152
|
+
"root": ["hooks.json"],
|
|
161
153
|
"agents": [
|
|
162
154
|
"pm-agent.md",
|
|
163
155
|
"implementation-agent.md",
|
|
@@ -168,12 +160,7 @@
|
|
|
168
160
|
".flydocs": {
|
|
169
161
|
"root": ["config.json", "version", "CHANGELOG.md"],
|
|
170
162
|
"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
|
-
],
|
|
163
|
+
"hooks": ["auto-approve.py", "post-edit.py", "prompt-submit.py"],
|
|
177
164
|
"templates": ["bug.md", "chore.md", "feature.md", "idea.md"]
|
|
178
165
|
},
|
|
179
166
|
"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()
|