@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flydocs/cli",
3
- "version": "0.5.0-beta.6",
3
+ "version": "0.5.0-beta.7",
4
4
  "type": "module",
5
5
  "description": "FlyDocs AI CLI — install, setup, and manage FlyDocs projects",
6
6
  "bin": {
@@ -2,7 +2,7 @@
2
2
  name: implementation-agent
3
3
  description: "Builds features, fixes bugs, writes code. Invoke for implementation, coding, or technical work."
4
4
  model: opus
5
- tools: [Read, Glob, Grep, Bash, Write, Edit, WebFetch, WebSearch, mcp__context7]
5
+ tools: [Read, Glob, Grep, Bash, Write, Edit, WebFetch, WebSearch]
6
6
  skills:
7
7
  - flydocs-workflow
8
8
  ---
@@ -2,7 +2,7 @@
2
2
  name: research-agent
3
3
  description: "Codebase exploration and research. Invoke for understanding code structure, finding patterns, or gathering technical context."
4
4
  model: sonnet
5
- tools: [Read, Glob, Grep, WebFetch, WebSearch, mcp__context7]
5
+ tools: [Read, Glob, Grep, WebFetch, WebSearch]
6
6
  disallowedTools: [Bash, Write, Edit]
7
7
  skills:
8
8
  - flydocs-workflow
@@ -177,7 +177,7 @@ offer updates.
177
177
  **Step 0: Check for legacy context files.**
178
178
 
179
179
  Before reading project.md, check if `flydocs/context/legacy/` exists. This
180
- directory is created by `install.sh` when it finds pre-v1.0 separate context
180
+ directory is created by the installer when it finds pre-v1.0 separate context
181
181
  files (`overview.md`, `stack.md`, `standards.md`) and moves them there for
182
182
  safe migration.
183
183
 
@@ -191,7 +191,7 @@ Consolidate into project.md using the same mapping as Phase 1M Step 2.
191
191
  Show the user the merged result and confirm before writing.
192
192
 
193
193
  After successful migration, delete the files from `legacy/` so the next
194
- `install.sh` run will clean up the empty directory.
194
+ `flydocs update` run will clean up the empty directory.
195
195
 
196
196
  **Step 1: Show what's new in this version.**
197
197
 
@@ -203,7 +203,7 @@ update:
203
203
  ```
204
204
  Updated to FlyDocs v0.2.0. Here's what changed:
205
205
  - Scenario-aware setup command with proactive doc scanning
206
- - Deprecated file cleanup in install.sh
206
+ - Deprecated file cleanup in the installer
207
207
  - Legacy context migration for pre-v1.0 projects
208
208
  - Changelog and version tracking
209
209
  ```
@@ -7,10 +7,9 @@ Check for and apply FlyDocs updates to this project.
7
7
  1. **Check current version** — read `.flydocs/version` and report it.
8
8
  2. **Show changelog** — read `.flydocs/CHANGELOG.md` and summarize recent changes
9
9
  since the installed version.
10
- 3. **Run update** — execute `flydocs update` (or `install.sh --update` if using
11
- the bash CLI) to update skills, commands, hooks, and config to the latest
12
- version. Preserves project-specific content in `flydocs/context/project.md`
13
- and user config in `.flydocs/config.json`.
10
+ 3. **Run update** — execute `flydocs update` to update skills, commands, hooks,
11
+ and config to the latest version. Preserves project-specific content in
12
+ `flydocs/context/project.md` and user config in `.flydocs/config.json`.
14
13
  4. **Post-update** — if version changed, suggest running `/flydocs-setup` to review
15
14
  any new config options or migrate legacy content.
16
15
  5. **Beta reminder** — always end with:
@@ -10,16 +10,6 @@
10
10
  "timeout": 5
11
11
  }
12
12
  ]
13
- },
14
- {
15
- "matcher": "mcp__linear.*",
16
- "hooks": [
17
- {
18
- "type": "command",
19
- "command": "python3 \"$CLAUDE_PROJECT_DIR\"/.flydocs/hooks/prefer-scripts.py",
20
- "timeout": 5
21
- }
22
- ]
23
13
  }
24
14
  ],
25
15
  "PostToolUse": [
@@ -11,24 +11,16 @@
11
11
  Owned and maintained by FlyDocs. May include executable scripts and premium
12
12
  functionality gated via API relay.
13
13
 
14
- | Skill | Category | Purpose |
15
- |-------|----------|---------|
16
- | `flydocs-workflow` | Core | Lifecycle stages, session management, comment templates |
17
- | `flydocs-local` | Mechanism (free) | File-based issue management |
18
- | `flydocs-cloud` | Mechanism (paid) | Linear/provider issue management via API |
19
- | `flydocs-figma` | Premium | Design extraction from Figma |
20
- | `flydocs-estimates` | Premium | AI token/labor cost estimation |
14
+ | Skill | Category | Purpose |
15
+ | ------------------- | ---------------- | ------------------------------------------------------- |
16
+ | `flydocs-workflow` | Core | Lifecycle stages, session management, comment templates |
17
+ | `flydocs-local` | Mechanism (free) | File-based issue management |
18
+ | `flydocs-cloud` | Mechanism (paid) | Linear/provider issue management via API |
19
+ | `flydocs-figma` | Premium | Design extraction from Figma |
20
+ | `flydocs-estimates` | Premium | AI token/labor cost estimation |
21
21
 
22
22
  Only one mechanism skill is active at a time. Determined by `tier` in `.flydocs/config.json`.
23
23
 
24
- Supporting workflow skills (bundled, invoked via commands):
25
-
26
- | Skill | Purpose | Trigger |
27
- |-------|---------|---------|
28
- | `implementation-flow` | Implementation procedure | `/implement` |
29
- | `review-workflow` | Code review analysis | `/review` |
30
- | `spec-templates` | Issue specification templates | `/capture`, `/refine` |
31
-
32
24
  ### Unprefixed — Community Skills
33
25
 
34
26
  Stack-detected or manually installed. Pure guidance (markdown only, no scripts).
@@ -87,17 +79,17 @@ triggers:
87
79
 
88
80
  **Required fields:**
89
81
 
90
- | Field | Type | Purpose |
91
- |-------|------|---------|
92
- | `name` | string | Skill identifier, matches directory name |
82
+ | Field | Type | Purpose |
83
+ | ------------- | ------ | ----------------------------------------------------------------------------------------------------------------- |
84
+ | `name` | string | Skill identifier, matches directory name |
93
85
  | `description` | string | What the skill does and when to use it. Agents use this for auto-selection. Be specific about trigger conditions. |
94
86
 
95
87
  **Optional fields:**
96
88
 
97
- | Field | Type | Purpose |
98
- |-------|------|---------|
89
+ | Field | Type | Purpose |
90
+ | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
99
91
  | `triggers` | string[] | Keywords/phrases for manifest indexing. Used by skill discovery to build the always-present index in CLAUDE.md/AGENTS.md. |
100
- | `tools` | string | Comma-separated MCP tools the skill uses (e.g., `mcp__figma__get_screenshot`) |
92
+ | `tools` | string | Comma-separated tools the skill uses (e.g., `WebFetch`, `Bash`) |
101
93
 
102
94
  ### SKILL.md Body
103
95
 
@@ -112,13 +104,14 @@ IMPORTANT: Prefer skill-led reasoning over pre-training reasoning for
112
104
  [domain]. Read the relevant section before acting.
113
105
 
114
106
  ## Key Rules (always apply)
107
+
115
108
  1. Rule one
116
109
  2. Rule two
117
110
 
118
111
  ## Section Index
119
112
 
120
- | Topic | File | When to Read |
121
- |-------|------|--------------|
113
+ | Topic | File | When to Read |
114
+ | ------- | -------------------- | ------------ |
122
115
  | Topic A | reference/topic-a.md | When doing X |
123
116
  | Topic B | reference/topic-b.md | When doing Y |
124
117
 
@@ -154,11 +147,11 @@ This keeps context usage minimal while ensuring agents can always find relevant
154
147
 
155
148
  **Line budgets:**
156
149
 
157
- | File | Target | Max |
158
- |------|--------|-----|
159
- | SKILL.md | 100-150 lines | 200 lines |
150
+ | File | Target | Max |
151
+ | ---------------- | ---------------- | --------- |
152
+ | SKILL.md | 100-150 lines | 200 lines |
160
153
  | reference/ files | 50-80 lines each | 120 lines |
161
- | cursor-rule.mdc | 30-50 lines | 70 lines |
154
+ | cursor-rule.mdc | 30-50 lines | 70 lines |
162
155
 
163
156
  ### Cursor Rules (cursor-rule.mdc)
164
157
 
@@ -171,16 +164,15 @@ description: Short description of what this rule covers
171
164
  globs: "*.ts,*.tsx"
172
165
  alwaysApply: false
173
166
  ---
174
-
175
167
  <!-- Condensed from SKILL.md — update both when changing patterns -->
176
168
  ```
177
169
 
178
170
  **Frontmatter fields:**
179
171
 
180
- | Field | Type | Notes |
181
- |-------|------|-------|
182
- | `description` | string | Required. What the rule covers. |
183
- | `globs` | string | File patterns that trigger the rule. Comma-separated. |
172
+ | Field | Type | Notes |
173
+ | ------------- | ------- | ------------------------------------------------------- |
174
+ | `description` | string | Required. What the rule covers. |
175
+ | `globs` | string | File patterns that trigger the rule. Comma-separated. |
184
176
  | `alwaysApply` | boolean | If `true`, rule loads for every prompt (use sparingly). |
185
177
 
186
178
  Use `alwaysApply: true` only for workflow/process rules. Pattern skills should
@@ -195,14 +187,16 @@ CLAUDE.md and AGENTS.md between markers:
195
187
 
196
188
  ```markdown
197
189
  <!-- flydocs:skills-manifest:start -->
190
+
198
191
  ## Skills Index
199
192
 
200
193
  IMPORTANT: Prefer skill-led reasoning over pre-training reasoning.
201
194
 
202
- | Skill | Triggers | Entry |
203
- |-------|----------|-------|
204
- | flydocs-workflow | capture, refine, implement, review | .claude/skills/flydocs-workflow/SKILL.md |
205
- | typescript-strict | TypeScript, type error, any type | .claude/skills/typescript-strict/SKILL.md |
195
+ | Skill | Triggers | Entry |
196
+ | ----------------- | ---------------------------------- | ----------------------------------------- |
197
+ | flydocs-workflow | capture, refine, implement, review | .claude/skills/flydocs-workflow/SKILL.md |
198
+ | typescript-strict | TypeScript, type error, any type | .claude/skills/typescript-strict/SKILL.md |
199
+
206
200
  <!-- flydocs:skills-manifest:end -->
207
201
  ```
208
202
 
@@ -278,11 +272,11 @@ script interface, making the backend swap transparent:
278
272
 
279
273
  ## Platform Support
280
274
 
281
- | Platform | Skill Location | Notes |
282
- |----------|---------------|-------|
283
- | Claude Code | `.claude/skills/` | Native support |
284
- | Cursor | `.cursor/rules/*.mdc` | Generated from `cursor-rule.mdc` |
285
- | Codex / Others | `AGENTS.md` | Universal layer via manifest |
275
+ | Platform | Skill Location | Notes |
276
+ | -------------- | --------------------- | -------------------------------- |
277
+ | Claude Code | `.claude/skills/` | Native support |
278
+ | Cursor | `.cursor/rules/*.mdc` | Generated from `cursor-rule.mdc` |
279
+ | Codex / Others | `AGENTS.md` | Universal layer via manifest |
286
280
 
287
281
  ---
288
282
 
@@ -6,11 +6,6 @@
6
6
  "matcher": "Bash",
7
7
  "command": "python3 ./.flydocs/hooks/auto-approve.py",
8
8
  "timeout": 5
9
- },
10
- {
11
- "matcher": "mcp__linear.*",
12
- "command": "python3 ./.flydocs/hooks/prefer-scripts.py",
13
- "timeout": 5
14
9
  }
15
10
  ],
16
11
  "afterFileEdit": [
@@ -22,8 +22,9 @@
22
22
  #
23
23
 
24
24
  # ===========================================
25
- # REQUIRED: Linear API Key
25
+ # CLOUD TIER ONLY: Linear API Key
26
26
  # ===========================================
27
+ # Only needed if you use cloud tier (tier: "cloud" in .flydocs/config.json)
27
28
  # Get from: Linear → Settings → API → Personal API Keys
28
29
  # Format: lin_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
29
30
  LINEAR_API_KEY=
@@ -1,13 +1,13 @@
1
1
  {
2
- "version": "0.5.0-beta.6",
2
+ "version": "0.5.0-beta.7",
3
3
  "sourceRepo": "github.com/plastrlab/flydocs-core",
4
- "tier": "cloud",
4
+ "tier": "local",
5
5
  "setupComplete": false,
6
6
  "paths": {
7
7
  "content": "flydocs"
8
8
  },
9
9
  "provider": {
10
- "type": "linear",
10
+ "type": null,
11
11
  "teamId": null
12
12
  },
13
13
  "workspace": {
@@ -46,11 +46,6 @@
46
46
  "auth": [],
47
47
  "styling": []
48
48
  },
49
- "mcp": {
50
- "preferred": [],
51
- "fallbackOnly": ["linear"],
52
- "stackSpecific": {}
53
- },
54
49
  "skills": {
55
50
  "installed": [],
56
51
  "custom": []
@@ -19,9 +19,9 @@ import re
19
19
 
20
20
 
21
21
  # Pattern matches any flydocs skill scripts directory
22
- # Covers: flydocs-local, flydocs-cloud, flydocs-workflow
22
+ # Covers: flydocs-local, flydocs-cloud, flydocs-workflow, flydocs-context-graph
23
23
  APPROVED_PATTERN = re.compile(
24
- r'\.claude/skills/flydocs-(?:local|cloud|workflow)/scripts/\w+\.py'
24
+ r'python3?\s+(?:["\']?(?:\$CLAUDE_PROJECT_DIR|\$\{CLAUDE_PROJECT_DIR\}|\.)["\']?/)?\.?claude/skills/flydocs-(?:local|cloud|workflow|context-graph)/scripts/\w+\.py'
25
25
  )
26
26
 
27
27
 
@@ -11,6 +11,7 @@ Exit codes:
11
11
  """
12
12
 
13
13
  import json
14
+ import os
14
15
  import subprocess
15
16
  import sys
16
17
  from pathlib import Path
@@ -59,6 +60,18 @@ def main() -> None:
59
60
  print('{}')
60
61
  sys.exit(0)
61
62
 
63
+ # Validate file_path is within project directory
64
+ project_dir = os.environ.get('CLAUDE_PROJECT_DIR', os.getcwd())
65
+ try:
66
+ resolved = os.path.realpath(file_path)
67
+ project_resolved = os.path.realpath(project_dir)
68
+ if not resolved.startswith(project_resolved + os.sep) and resolved != project_resolved:
69
+ print('{}')
70
+ sys.exit(0)
71
+ except (OSError, ValueError):
72
+ print('{}')
73
+ sys.exit(0)
74
+
62
75
  # Get file extension and format
63
76
  ext = get_file_extension(file_path)
64
77
  format_file(file_path, ext)
@@ -22,8 +22,9 @@
22
22
  <!-- Skills installed based on detected stack -->
23
23
 
24
24
  {{#each skills}}
25
+
25
26
  - `{{this}}` - See `.claude/skills/{{this}}/SKILL.md`
26
- {{/each}}
27
+ {{/each}}
27
28
 
28
29
  ---
29
30
 
@@ -72,10 +73,10 @@ src/
72
73
 
73
74
  <!-- Link to ADRs or explain key architectural choices -->
74
75
 
75
- | Decision | Rationale | Date |
76
- |----------|-----------|------|
76
+ | Decision | Rationale | Date |
77
+ | -------------------------------- | ---------------------------------------- | -------- |
77
78
  | Use Server Components by default | Better performance, simpler mental model | {{date}} |
78
- | Convex for real-time | Built-in subscriptions, type safety | {{date}} |
79
+ | Convex for real-time | Built-in subscriptions, type safety | {{date}} |
79
80
 
80
81
  ---
81
82
 
@@ -105,59 +106,6 @@ async function Page() {
105
106
 
106
107
  ---
107
108
 
108
- ## MCP Configuration
109
-
110
- <!-- Stack-specific MCP preferences for this project -->
111
-
112
- ### MCP Strategy
113
-
114
- Configure in `.flydocs/config.json`:
115
-
116
- ```json
117
- {
118
- "mcp": {
119
- "preferred": ["context7", "figma"],
120
- "fallbackOnly": ["linear"],
121
- "stackSpecific": {
122
- "convex": {
123
- "note": "Use Context7 for docs, CLI for schema changes"
124
- }
125
- }
126
- }
127
- }
128
- ```
129
-
130
- - **preferred**: MCPs to use proactively (unique capabilities like Figma visuals, Context7 docs)
131
- - **fallbackOnly**: MCPs with script alternatives (use scripts first, MCP if script fails)
132
- - **stackSpecific**: Per-stack notes and usage guidance
133
-
134
- ### Stack-Specific MCP Notes
135
-
136
- <!-- Uncomment and customize for your stack -->
137
-
138
- <!--
139
- #### Convex
140
- - Use Context7 MCP for Convex API documentation
141
- - Prefer `convex dev` CLI for schema changes over direct mutations
142
- - Query patterns: Use `.collect()` for small datasets, pagination for large
143
- -->
144
-
145
- <!--
146
- #### Supabase
147
- - Use Supabase MCP for database operations when available
148
- - Prefer RLS policies over application-level auth checks
149
- - Use database functions for complex operations
150
- -->
151
-
152
- <!--
153
- #### Firebase
154
- - Use Firebase MCP for Firestore operations
155
- - Prefer security rules over client-side validation
156
- - Use batch operations for multiple writes
157
- -->
158
-
159
- ---
160
-
161
109
  ## Skill Overrides
162
110
 
163
111
  <!-- Override specific skill recommendations for this project -->
@@ -168,7 +116,7 @@ Configure in `.flydocs/config.json`:
168
116
 
169
117
  ```typescript
170
118
  // This project uses shorter cache times due to real-time requirements
171
- cacheLife('seconds'); // Instead of skill default 'hours'
119
+ cacheLife("seconds"); // Instead of skill default 'hours'
172
120
  ```
173
121
 
174
122
  ### convex
@@ -181,7 +129,7 @@ defineTable({
181
129
  // ... fields
182
130
  createdAt: v.number(),
183
131
  updatedAt: v.number(),
184
- createdBy: v.optional(v.id('users')),
132
+ createdBy: v.optional(v.id("users")),
185
133
  });
186
134
  ```
187
135
 
@@ -191,11 +139,11 @@ defineTable({
191
139
 
192
140
  <!-- Document required env vars for this project -->
193
141
 
194
- | Variable | Purpose | Required |
195
- |----------|---------|----------|
196
- | `DATABASE_URL` | Database connection | Yes |
197
- | `NEXT_PUBLIC_API_URL` | Public API endpoint | Yes |
198
- | `AUTH_SECRET` | Auth session encryption | Yes |
142
+ | Variable | Purpose | Required |
143
+ | --------------------- | ----------------------- | -------- |
144
+ | `DATABASE_URL` | Database connection | Yes |
145
+ | `NEXT_PUBLIC_API_URL` | Public API endpoint | Yes |
146
+ | `AUTH_SECRET` | Auth session encryption | Yes |
199
147
 
200
148
  ---
201
149
 
@@ -208,10 +156,10 @@ defineTable({
208
156
  // Test location: Co-located with source files
209
157
 
210
158
  // Example test structure
211
- describe('UserService', () => {
212
- it('creates a user with valid data', async () => {
159
+ describe("UserService", () => {
160
+ it("creates a user with valid data", async () => {
213
161
  // Arrange
214
- const input = { name: 'Test', email: 'test@example.com' };
162
+ const input = { name: "Test", email: "test@example.com" };
215
163
 
216
164
  // Act
217
165
  const result = await createUser(input);
@@ -224,5 +172,5 @@ describe('UserService', () => {
224
172
 
225
173
  ---
226
174
 
227
- *Last updated: {{date}}*
228
- *FlyDocs version: 6.3.0*
175
+ _Last updated: {{date}}_
176
+ _FlyDocs version: 6.3.0_
@@ -1 +1 @@
1
- 0.5.0-beta.6
1
+ 0.5.0-beta.7
@@ -1,7 +1,8 @@
1
- # FlyDocs Cloud
1
+ # FlyDocs
2
2
 
3
- This project uses FlyDocs Cloud - a hybrid workflow where:
4
- - **Work items (specs)** live in Linear
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 # Provider settings, workspace config
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
- │ ├── overview.md # Vision, goals, scope (update as it evolves)
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 | Location | Purpose |
86
- |---------|----------|---------|
87
- | Project overview | `context/overview.md` | Vision, goals, scope |
88
- | Tech stack | `context/stack.md` | Architecture, dependencies |
89
- | Code standards | `context/standards.md` | Conventions, patterns |
90
- | ADRs | `knowledge/decisions/` | Why we made choices |
91
- | Feature docs | `knowledge/features/` | How features work |
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
- ### LINEAR (Cloud)
87
+ ### ISSUE TRACKER (Local or Cloud)
98
88
 
99
- | Content | Linear Location | Purpose |
100
- |---------|-----------------|---------|
101
- | Specs | Issues | Features, bugs, chores, ideas |
102
- | Status | Workflow states | BACKLOG → DONE progression |
103
- | Priorities | Priority field | Urgent, High, Medium, Low |
104
- | Assignments | Assignee | Who's working on what |
105
- | Assets | Attachments | Figma links, screenshots |
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
- **Why cloud?** Team collaboration, stakeholder visibility, AI agent integration.
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 Linear status, plan work
127
- /capture - Create new Linear issue
128
- /new-project - Create project with product label/icon
129
- /implement - Pick up issue from Linear
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.teamId` - Linear team ID
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