@flydocs/cli 0.6.0-alpha.13 → 0.6.0-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/cli.js +281 -256
  2. package/package.json +1 -1
  3. package/template/.claude/CLAUDE.md +62 -66
  4. package/template/.claude/agents/implementation-agent.md +1 -1
  5. package/template/.claude/agents/pm-agent.md +1 -1
  6. package/template/.claude/commands/activate.md +1 -1
  7. package/template/.claude/commands/attach.md +1 -1
  8. package/template/.claude/commands/block.md +2 -2
  9. package/template/.claude/commands/capture.md +1 -1
  10. package/template/.claude/commands/close.md +1 -1
  11. package/template/.claude/commands/flydocs-setup.md +261 -58
  12. package/template/.claude/commands/flydocs-upgrade.md +26 -27
  13. package/template/.claude/commands/implement.md +1 -1
  14. package/template/.claude/commands/new-project.md +1 -1
  15. package/template/.claude/commands/onboard.md +275 -0
  16. package/template/.claude/commands/project-update.md +1 -1
  17. package/template/.claude/commands/refine.md +1 -1
  18. package/template/.claude/commands/review.md +1 -1
  19. package/template/.claude/commands/start-session.md +1 -1
  20. package/template/.claude/commands/status.md +1 -1
  21. package/template/.claude/commands/validate.md +1 -1
  22. package/template/.claude/commands/wrap-session.md +1 -1
  23. package/template/.claude/hooks/auto-approve.py +132 -0
  24. package/template/.claude/hooks/post-pr-check.py +108 -0
  25. package/template/.claude/hooks/post-transition-check.py +94 -0
  26. package/template/{.flydocs → .claude}/hooks/prompt-submit.py +167 -17
  27. package/template/.claude/hooks/session-start.py +146 -0
  28. package/template/.claude/hooks/stop-gate.py +109 -0
  29. package/template/.claude/settings.json +41 -4
  30. package/template/.claude/skills/README.md +23 -25
  31. package/template/.claude/skills/flydocs-workflow/SKILL.md +121 -34
  32. package/template/.claude/skills/flydocs-workflow/cursor-rule.mdc +9 -8
  33. package/template/.claude/skills/flydocs-workflow/reference/golden-rules.md +28 -17
  34. package/template/.claude/skills/flydocs-workflow/reference/graph-schema.md +116 -0
  35. package/template/.claude/skills/flydocs-workflow/reference/pr-workflow.md +30 -15
  36. package/template/.claude/skills/flydocs-workflow/reference/priority-estimates.md +1 -1
  37. package/template/.claude/skills/flydocs-workflow/reference/service-descriptor-schema.md +251 -0
  38. package/template/.claude/skills/flydocs-workflow/reference/status-workflow.md +26 -26
  39. package/template/.claude/skills/flydocs-workflow/scripts/_local/__init__.py +0 -0
  40. package/template/.claude/skills/{flydocs-local/scripts/flydocs_api.py → flydocs-workflow/scripts/_local/file_store.py} +133 -46
  41. package/template/.claude/skills/flydocs-workflow/scripts/flydocs_api.py +693 -0
  42. package/template/{.flydocs → .claude/skills/flydocs-workflow}/scripts/generate_manifest.py +4 -4
  43. package/template/.claude/skills/{flydocs-context-graph → flydocs-workflow}/scripts/graph_build.py +132 -1
  44. package/template/.claude/skills/{flydocs-context-graph → flydocs-workflow}/scripts/graph_query.py +18 -5
  45. package/template/.claude/skills/{flydocs-context-graph → flydocs-workflow}/scripts/graph_session.py +1 -1
  46. package/template/.claude/skills/{flydocs-context-graph → flydocs-workflow}/scripts/graph_update.py +4 -4
  47. package/template/.claude/skills/{flydocs-context-graph → flydocs-workflow}/scripts/graph_utils.py +2 -1
  48. package/template/.claude/skills/flydocs-workflow/scripts/issues.py +489 -0
  49. package/template/.claude/skills/flydocs-workflow/scripts/projects.py +144 -0
  50. package/template/.claude/skills/flydocs-workflow/scripts/pull_services.py +128 -0
  51. package/template/.claude/skills/flydocs-workflow/scripts/push_service.py +132 -0
  52. package/template/.claude/skills/flydocs-workflow/scripts/session.py +54 -0
  53. package/template/.claude/skills/flydocs-workflow/scripts/workspace.py +860 -0
  54. package/template/.claude/skills/flydocs-workflow/session.md +16 -11
  55. package/template/.claude/skills/flydocs-workflow/stages/activate.md +13 -8
  56. package/template/.claude/skills/flydocs-workflow/stages/capture.md +4 -4
  57. package/template/.claude/skills/flydocs-workflow/stages/close.md +1 -1
  58. package/template/.claude/skills/flydocs-workflow/stages/implement.md +7 -7
  59. package/template/.claude/skills/flydocs-workflow/stages/refine.md +5 -5
  60. package/template/.claude/skills/flydocs-workflow/stages/review.md +2 -2
  61. package/template/.claude/skills/flydocs-workflow/stages/validate.md +3 -1
  62. package/template/.claude/skills/flydocs-workflow/templates/pr/default.md +33 -0
  63. package/template/.cursor/agents/implementation-agent.md +1 -1
  64. package/template/.cursor/agents/pm-agent.md +2 -2
  65. package/template/.cursor/hooks.json +10 -3
  66. package/template/.env.example +6 -6
  67. package/template/.flydocs/config.json +2 -1
  68. package/template/.flydocs/templates/README.md +13 -14
  69. package/template/.flydocs/templates/quick-capture.md +4 -8
  70. package/template/.flydocs/version +1 -1
  71. package/template/AGENTS.md +39 -32
  72. package/template/flydocs/README.md +1 -3
  73. package/template/flydocs/context/project.md +6 -3
  74. package/template/flydocs/design-system/README.md +3 -3
  75. package/template/manifest.json +17 -19
  76. package/template/.claude/skills/flydocs-cloud/SKILL.md +0 -138
  77. package/template/.claude/skills/flydocs-cloud/cursor-rule.mdc +0 -50
  78. package/template/.claude/skills/flydocs-cloud/scripts/assign.py +0 -28
  79. package/template/.claude/skills/flydocs-cloud/scripts/assign_cycle.py +0 -28
  80. package/template/.claude/skills/flydocs-cloud/scripts/assign_milestone.py +0 -22
  81. package/template/.claude/skills/flydocs-cloud/scripts/comment.py +0 -29
  82. package/template/.claude/skills/flydocs-cloud/scripts/create_issue.py +0 -83
  83. package/template/.claude/skills/flydocs-cloud/scripts/create_milestone.py +0 -35
  84. package/template/.claude/skills/flydocs-cloud/scripts/create_project.py +0 -33
  85. package/template/.claude/skills/flydocs-cloud/scripts/create_team.py +0 -39
  86. package/template/.claude/skills/flydocs-cloud/scripts/delete_milestone.py +0 -21
  87. package/template/.claude/skills/flydocs-cloud/scripts/estimate.py +0 -33
  88. package/template/.claude/skills/flydocs-cloud/scripts/flydocs_api.py +0 -241
  89. package/template/.claude/skills/flydocs-cloud/scripts/generate_config.py +0 -125
  90. package/template/.claude/skills/flydocs-cloud/scripts/get_estimate_scale.py +0 -23
  91. package/template/.claude/skills/flydocs-cloud/scripts/get_issue.py +0 -24
  92. package/template/.claude/skills/flydocs-cloud/scripts/get_me.py +0 -103
  93. package/template/.claude/skills/flydocs-cloud/scripts/link.py +0 -28
  94. package/template/.claude/skills/flydocs-cloud/scripts/list_cycles.py +0 -28
  95. package/template/.claude/skills/flydocs-cloud/scripts/list_issues.py +0 -44
  96. package/template/.claude/skills/flydocs-cloud/scripts/list_labels.py +0 -19
  97. package/template/.claude/skills/flydocs-cloud/scripts/list_milestones.py +0 -28
  98. package/template/.claude/skills/flydocs-cloud/scripts/list_projects.py +0 -31
  99. package/template/.claude/skills/flydocs-cloud/scripts/list_providers.py +0 -19
  100. package/template/.claude/skills/flydocs-cloud/scripts/list_statuses.py +0 -19
  101. package/template/.claude/skills/flydocs-cloud/scripts/list_teams.py +0 -19
  102. package/template/.claude/skills/flydocs-cloud/scripts/priority.py +0 -29
  103. package/template/.claude/skills/flydocs-cloud/scripts/project_update.py +0 -45
  104. package/template/.claude/skills/flydocs-cloud/scripts/refresh_labels.py +0 -87
  105. package/template/.claude/skills/flydocs-cloud/scripts/set_identity.py +0 -54
  106. package/template/.claude/skills/flydocs-cloud/scripts/set_labels.py +0 -54
  107. package/template/.claude/skills/flydocs-cloud/scripts/set_preferences.py +0 -49
  108. package/template/.claude/skills/flydocs-cloud/scripts/set_provider.py +0 -31
  109. package/template/.claude/skills/flydocs-cloud/scripts/set_status_mapping.py +0 -57
  110. package/template/.claude/skills/flydocs-cloud/scripts/set_team.py +0 -28
  111. package/template/.claude/skills/flydocs-cloud/scripts/transition.py +0 -26
  112. package/template/.claude/skills/flydocs-cloud/scripts/update_description.py +0 -36
  113. package/template/.claude/skills/flydocs-cloud/scripts/update_issue.py +0 -100
  114. package/template/.claude/skills/flydocs-cloud/scripts/update_milestone.py +0 -42
  115. package/template/.claude/skills/flydocs-cloud/scripts/validate_setup.py +0 -120
  116. package/template/.claude/skills/flydocs-context-graph/SKILL.md +0 -94
  117. package/template/.claude/skills/flydocs-context-graph/schema.md +0 -78
  118. package/template/.claude/skills/flydocs-context-graph/scripts/graph_context.py +0 -338
  119. package/template/.claude/skills/flydocs-context7/SKILL.md +0 -105
  120. package/template/.claude/skills/flydocs-context7/cursor-rule.mdc +0 -49
  121. package/template/.claude/skills/flydocs-context7/scripts/context7.py +0 -293
  122. package/template/.claude/skills/flydocs-estimates/SKILL.md +0 -384
  123. package/template/.claude/skills/flydocs-figma/SKILL.md +0 -377
  124. package/template/.claude/skills/flydocs-figma/references/PROMPTING.md +0 -108
  125. package/template/.claude/skills/flydocs-figma/references/TROUBLESHOOTING.md +0 -112
  126. package/template/.claude/skills/flydocs-local/SKILL.md +0 -103
  127. package/template/.claude/skills/flydocs-local/cursor-rule.mdc +0 -43
  128. package/template/.claude/skills/flydocs-local/scripts/assign.py +0 -29
  129. package/template/.claude/skills/flydocs-local/scripts/comment.py +0 -27
  130. package/template/.claude/skills/flydocs-local/scripts/create_issue.py +0 -44
  131. package/template/.claude/skills/flydocs-local/scripts/estimate.py +0 -37
  132. package/template/.claude/skills/flydocs-local/scripts/get_issue.py +0 -20
  133. package/template/.claude/skills/flydocs-local/scripts/link.py +0 -41
  134. package/template/.claude/skills/flydocs-local/scripts/list_issues.py +0 -50
  135. package/template/.claude/skills/flydocs-local/scripts/priority.py +0 -37
  136. package/template/.claude/skills/flydocs-local/scripts/project_update.py +0 -67
  137. package/template/.claude/skills/flydocs-local/scripts/status_summary.py +0 -16
  138. package/template/.claude/skills/flydocs-local/scripts/transition.py +0 -24
  139. package/template/.claude/skills/flydocs-local/scripts/update_description.py +0 -35
  140. package/template/.claude/skills/flydocs-local/scripts/update_issue.py +0 -84
  141. package/template/.flydocs/hooks/auto-approve.py +0 -71
  142. package/template/.flydocs/scripts/skill_manager.py +0 -541
  143. package/template/.flydocs/templates/bug.md +0 -166
  144. package/template/.flydocs/templates/chore.md +0 -110
  145. package/template/.flydocs/templates/feature.md +0 -173
  146. package/template/.flydocs/templates/idea.md +0 -122
  147. /package/template/{.flydocs → .claude}/hooks/post-edit.py +0 -0
  148. /package/template/.claude/skills/{flydocs-estimates/references → flydocs-workflow/reference}/provider-costs.md +0 -0
  149. /package/template/.claude/skills/flydocs-workflow/templates/{bug.md → issues/bug.md} +0 -0
  150. /package/template/.claude/skills/flydocs-workflow/templates/{chore.md → issues/chore.md} +0 -0
  151. /package/template/.claude/skills/flydocs-workflow/templates/{feature.md → issues/feature.md} +0 -0
  152. /package/template/.claude/skills/flydocs-workflow/templates/{idea.md → issues/idea.md} +0 -0
@@ -7,29 +7,34 @@ When a conversation begins or the user returns after a gap:
7
7
  1. **Query graph for issue context** (if an issue ID is known from the prompt or last session) —
8
8
 
9
9
  ```
10
- python3 .claude/skills/flydocs-context-graph/scripts/graph_query.py --node <issue-id> --depth 2
10
+ python3 .claude/skills/flydocs-workflow/scripts/graph_query.py --node <issue-id> --depth 2
11
11
  ```
12
12
 
13
13
  This surfaces related decisions, blocking relationships, and recent session activity.
14
14
  Skip silently if the script is not installed or the graph has not been built.
15
15
 
16
- 2. **Fetch all product issues in one call** — Run `list_issues.py --active --limit 100`.
16
+ 2. **Check workspace context** — If `flydocs/context/service.json` exists, note the
17
+ repo's topology and dependencies. For multi-repo workspaces (topology type 3 or 4),
18
+ briefly mention which sibling repos exist and any active cross-repo dependencies.
19
+ This helps the user orient when switching between repos.
20
+
21
+ 3. **Fetch all product issues in one call** — Run `issues.py list --active --limit 100`.
17
22
  This is auto-scoped by the product cascade: `activeProjects` → `product.labelIds` → team-wide.
18
23
  Issues outside the product scope are never shown.
19
24
 
20
- 3. **Identify the active project** — Read `workspace.activeProjects` from config.
25
+ 4. **Identify the active project** — Read `workspace.activeProjects` from config.
21
26
  Separate issues into two buckets:
22
27
  - **Active project issues** — issues whose `projectId` matches an active project
23
28
  - **Other product issues** — issues in the product scope but in a different project
24
29
 
25
- 4. **Group active project issues by milestone** — Use the `milestone` and `milestoneSortOrder`
30
+ 5. **Group active project issues by milestone** — Use the `milestone` and `milestoneSortOrder`
26
31
  fields returned by the script. Sort milestones by `milestoneSortOrder` (lowest first = earliest).
27
32
  Within each milestone, group by status.
28
33
 
29
- 5. **Identify the current milestone** — The first milestone (by sort order) that still has
34
+ 6. **Identify the current milestone** — The first milestone (by sort order) that still has
30
35
  open issues. This is where work should focus.
31
36
 
32
- 6. **Present the dashboard:**
37
+ 7. **Present the dashboard:**
33
38
 
34
39
  ```
35
40
  Welcome back! [Product Name] status:
@@ -52,21 +57,21 @@ When a conversation begins or the user returns after a gap:
52
57
  Suggested starting point: [ISSUE-ID] — [reason: highest priority in current milestone / unblocks others / due soon]
53
58
  ```
54
59
 
55
- 7. **Suggest where to start** — Use this priority cascade:
60
+ 8. **Suggest where to start** — Use this priority cascade:
56
61
  - Blocked issues that need unblocking (always surface first)
57
62
  - In-progress issues (continue existing work)
58
63
  - Due date approaching (within 7 days)
59
64
  - Highest priority in the current milestone
60
65
  - Issues that unblock downstream milestones
61
66
 
62
- 8. **Surface other product issues briefly** — If there are issues in the product scope
67
+ 9. **Surface other product issues briefly** — If there are issues in the product scope
63
68
  but outside the active project, mention the count with a one-line summary:
64
69
 
65
70
  ```
66
71
  Also in [Product Name]: [N] issues across other projects (use --all to see)
67
72
  ```
68
73
 
69
- 9. **Check for stale issues** — Flag issues exceeding staleness thresholds (see below).
74
+ 10. **Check for stale issues** — Flag issues exceeding staleness thresholds (see below).
70
75
 
71
76
  **Important:** Do NOT make separate API calls per status or per milestone. One call returns
72
77
  all issues with their status and milestone fields — group them in your response.
@@ -87,7 +92,7 @@ When the user indicates they're done for the session:
87
92
  If yes, prompt the user: "This session involved [specific discovery]. Should we capture it in a knowledge doc before wrapping?" Use `/knowledge` if they agree.
88
93
  3. **Compose summary** using the template below.
89
94
  4. **Determine health status** — See health table.
90
- 5. **Post project update** — `project_update.py` with health and summary body.
95
+ 5. **Post project update** — `session.py project-update` with health and summary body.
91
96
  6. **Write last-summary.json** — Write `.flydocs/session/last-summary.json` for cross-session continuity.
92
97
  Create the directory if it doesn't exist. Structure:
93
98
 
@@ -106,7 +111,7 @@ When the user indicates they're done for the session:
106
111
 
107
112
  7. **Record session in context graph** — Call `graph_session.py` with summary and issues worked on:
108
113
  ```
109
- python3 .claude/skills/flydocs-context-graph/scripts/graph_session.py \
114
+ python3 .claude/skills/flydocs-workflow/scripts/graph_session.py \
110
115
  --summary "Brief summary of session outcomes" \
111
116
  --issue ISSUE-ID [--issue ISSUE-ID2] \
112
117
  [--decision NNN]
@@ -15,7 +15,7 @@ Assign work to a person and move the issue to In Progress.
15
15
 
16
16
  When user asks "what should I work on?":
17
17
 
18
- 1. **Query available issues** — `list_issues.py` for Ready and Backlog states.
18
+ 1. **Query available issues** — `issues.py list` for Ready and Backlog states.
19
19
  2. **Filter** — Exclude blocked issues and issues assigned to others.
20
20
  3. **Rank** — Priority (highest first) → unblocked → smaller estimate.
21
21
  4. **Present recommendation** — Show top candidates with reasoning.
@@ -25,16 +25,21 @@ When user asks "what should I work on?":
25
25
 
26
26
  1. **Query graph for blocking relationships** — Check for blockers before proceeding:
27
27
  ```
28
- python3 .claude/skills/flydocs-context-graph/scripts/graph_query.py --node <issue-id> --relationships BLOCKS,BLOCKED_BY
28
+ python3 .claude/skills/flydocs-workflow/scripts/graph_query.py --node <issue-id> --relationships BLOCKS,BLOCKED_BY
29
29
  ```
30
30
  If blocking relationships exist, surface them to the user before continuing.
31
31
  Skip silently if the script is not installed or the graph has not been built.
32
- 2. **Read full issue** — Load description and acceptance criteria.
33
- 3. **Determine assignee** MANDATORY. Ask "Who should this be assigned to?" if unclear. This is a hard gate.
34
- 4. **Assign** `assign.py` with user identifier. If assignment fails, STOP. Do not continue.
35
- 5. **Set metadata** Priority and estimate if not already set.
36
- 6. **Transition** `transition.py` to Implementing with Activate comment from `reference/comment-templates.md`.
37
- 7. **Verify** — Confirm state = In Progress and assignee set.
32
+ 2. **Check cross-repo impact** — If `flydocs/context/service.json` exists and the issue
33
+ description references API changes, endpoint modifications, or interface updates,
34
+ check if the affected APIs appear in the descriptor's `apis` section. If so, note
35
+ which sibling repos may be affected (they CONSUME this interface). This is a
36
+ heads-up, not a gate just surface it for awareness.
37
+ 3. **Read full issue** — Load description and acceptance criteria.
38
+ 4. **Determine assignee** — MANDATORY. Ask "Who should this be assigned to?" if unclear. This is a hard gate.
39
+ 5. **Assign** — `issues.py assign` with user identifier. If assignment fails, STOP. Do not continue.
40
+ 6. **Set metadata** — Priority and estimate if not already set.
41
+ 7. **Transition** — `issues.py transition` to Implementing with Activate comment from `reference/comment-templates.md`.
42
+ 8. **Verify** — Confirm state = In Progress and assignee set.
38
43
 
39
44
  **Sequence matters:** Assign → metadata → transition. Never transition without an assignee.
40
45
 
@@ -16,7 +16,7 @@ When the user has enough context to describe the issue:
16
16
 
17
17
  1. **Determine type** — feature, bug, chore, or idea. Ask if unclear.
18
18
  2. **Select project** — Single active project: use it. Multiple: ask user. None: error.
19
- 3. **Fill template** — Read the appropriate template from `templates/`. Extract from user input:
19
+ 3. **Fill template** — Read the appropriate template from `templates/issues/`. Extract from user input:
20
20
  - **What** — Context or problem description
21
21
  - **Why** — User story or business value
22
22
  - **How** — Technical notes or approach (if known)
@@ -24,9 +24,9 @@ When the user has enough context to describe the issue:
24
24
  4. **Apply labels** — Include appropriate labels from config:
25
25
  - **Category label**: Automatic from issue type (feature, bug, chore, idea) via `issueLabels.category` in config
26
26
  - **Repo label**: If multi-repo workspace, apply the repo label from `issueLabels.repo` in config
27
- - **Product labels**: Applied automatically by the mechanism scripts from `workspace.product.labelIds`
27
+ - **Product labels**: Applied automatically by the workflow scripts from `workspace.product.labelIds`
28
28
  - **Ad-hoc labels**: Only if explicitly relevant (e.g., "accessibility", "performance")
29
- 5. **Create issue** — `create_issue.py` with title, type, description, priority, estimate (if known), and labels.
29
+ 5. **Create issue** — `issues.py create` with title, type, description, priority, estimate (if known), and labels.
30
30
  6. **Add comment** — Use the Capture template from `reference/comment-templates.md`.
31
31
  7. **Verify** — Confirm issue identifier returned.
32
32
 
@@ -35,7 +35,7 @@ When the user has enough context to describe the issue:
35
35
  When logging an idea or observation during flow — flesh out later:
36
36
 
37
37
  1. **Determine type** — Default to `idea` if unclear.
38
- 2. **Create issue** — `create_issue.py --triage` with minimal title and brief context.
38
+ 2. **Create issue** — `issues.py create --triage` with minimal title and brief context.
39
39
  Issue receives both the category label and the triage label.
40
40
  3. **Add comment** — "**Captured** — Quick capture, needs refinement."
41
41
  4. Issue sits in Backlog with triage tag. The Refine stage picks it up later.
@@ -16,7 +16,7 @@ Archive verified and completed work.
16
16
  - **Done** — Work completed and verified (normal path)
17
17
  - **Archived** — Deferring to a later date (not cancelled, may return)
18
18
  - **Canceled** — Not pursuing (won't be done)
19
- 4. **Transition** — `transition.py` with the appropriate Close comment from `reference/comment-templates.md`.
19
+ 4. **Transition** — `issues.py transition` with the appropriate Close comment from `reference/comment-templates.md`.
20
20
  5. **Verify** — Confirm terminal state reached.
21
21
 
22
22
  ## Gates
@@ -63,7 +63,7 @@ If yes, prompt the user: "Should we capture this in a knowledge doc?" Use `/know
63
63
  When adding a TODO comment in code:
64
64
 
65
65
  1. Write the initial comment: `// TODO: Description`
66
- 2. Create a corresponding issue via `create_issue.py` with type `chore`
66
+ 2. Create a corresponding issue via `issues.py create` with type `chore`
67
67
  3. Update the comment with the issue ID: `// TODO: Description (ENG-XXX)`
68
68
 
69
69
  Every TODO must have a tracked issue. No orphaned TODOs.
@@ -96,13 +96,13 @@ See `reference/pr-workflow.md` for full conventions. If changes warrant a PR:
96
96
  1. Create branch: `git checkout -b <type>/<ref>-<slug>`
97
97
  2. Stage and commit with a descriptive message: `<type>: <description> (<ref>)`
98
98
  3. Push: `git push -u origin <branch>`
99
- 4. Create PR linking the issue, using the PR description template
99
+ 4. Create PR: `python3 .claude/skills/flydocs-workflow/scripts/issues.py pr --issue <ref>`
100
100
 
101
- If the user requested a direct commit or changes are trivial, skip the PR and commit directly.
101
+ The PR dispatcher auto-populates the description from the issue context and links the PR back via comment. If the user requested a direct commit or changes are trivial, skip the PR and commit directly.
102
102
 
103
103
  ### 10. Hand Off to Review
104
104
 
105
- Transition to Review via `transition.py` with the "Ready for Review" comment from `reference/comment-templates.md`. Include:
105
+ Transition to Review via `issues.py transition` with the "Ready for Review" comment from `reference/comment-templates.md`. Include:
106
106
 
107
107
  - What changed (brief summary)
108
108
  - File count
@@ -114,10 +114,10 @@ Transition to Review via `transition.py` with the "Ready for Review" comment fro
114
114
 
115
115
  Checkboxes live in the issue description. Never in comments.
116
116
 
117
- 1. Read current description via `get_issue.py`
117
+ 1. Read current description via `issues.py get`
118
118
  2. Find `- [ ] Criterion text`
119
119
  3. Change to `- [x] Criterion text`
120
- 4. Save entire updated description via `update_description.py`
120
+ 4. Save entire updated description via `issues.py description`
121
121
 
122
122
  **Never** put completion checkmarks in comments. **Never** create new checkboxes in comments.
123
123
 
@@ -126,7 +126,7 @@ Checkboxes live in the issue description. Never in comments.
126
126
  If blocked during implementation:
127
127
 
128
128
  1. Document what is blocking and what is needed
129
- 2. Transition via `transition.py` to Blocked with comment from `reference/comment-templates.md`
129
+ 2. Transition via `issues.py transition` to Blocked with comment from `reference/comment-templates.md`
130
130
  3. If blocked by another issue, create a dependency relationship
131
131
 
132
132
  To unblock: transition back to Implementing with an Unblocked comment.
@@ -16,9 +16,9 @@ For quick captures that need classification and structure:
16
16
 
17
17
  1. **Read issue** — Load current content.
18
18
  2. **Classify type** — Determine category (feature/bug/chore/idea). Ask if unclear.
19
- 3. **Apply template** — Read appropriate template from `templates/` and restructure the issue content to match.
19
+ 3. **Apply template** — Read appropriate template from `templates/issues/` and restructure the issue content to match.
20
20
  4. **Set priority** — P1-P4 based on urgency and impact.
21
- 5. **Update description** — `update_description.py` with templated content.
21
+ 5. **Update description** — `issues.py description` with templated content.
22
22
  6. **Add comment** — Use Triage template from `reference/comment-templates.md`.
23
23
 
24
24
  ### Refinement Path (issue already templated)
@@ -32,8 +32,8 @@ For backlog items that need fleshing out before activation:
32
32
  5. **Add technical notes** — Implementation guidance, dependencies, affected areas.
33
33
  6. **Set estimate and priority** — If not already set. See `reference/priority-estimates.md`.
34
34
  7. **Check dependencies** — Blocked by other issues? Related work?
35
- 8. **Assign milestone** — If the issue fits a current or upcoming milestone, assign it via `--milestone` on `update_issue.py`. If no milestone is appropriate, leave unassigned but note it.
36
- 9. **Update description** — `update_description.py` with refined content.
35
+ 8. **Assign milestone** — If the issue fits a current or upcoming milestone, assign it via `--milestone` on `issues.py update`. If no milestone is appropriate, leave unassigned but note it.
36
+ 9. **Update description** — `issues.py description` with refined content.
37
37
  10. **Quality gate check** — Verify all criteria pass before transitioning:
38
38
 
39
39
  | Gate | Check | Required |
@@ -48,7 +48,7 @@ For backlog items that need fleshing out before activation:
48
48
 
49
49
  If any required gate fails, address it before transitioning.
50
50
 
51
- 11. **Transition to Ready** — `transition.py` with Refine comment from `reference/comment-templates.md`.
51
+ 11. **Transition to Ready** — `issues.py transition` with Refine comment from `reference/comment-templates.md`.
52
52
 
53
53
  ## Gates
54
54
 
@@ -61,12 +61,12 @@ This is a soft gate — not all issues require knowledge docs. Flag only when im
61
61
 
62
62
  **If approved:**
63
63
 
64
- 1. Transition to Testing via `transition.py` with "Code Review Passed" comment from `reference/comment-templates.md`.
64
+ 1. Transition to Testing via `issues.py transition` with "Code Review Passed" comment from `reference/comment-templates.md`.
65
65
 
66
66
  **If changes needed:**
67
67
 
68
68
  1. Document specific issues with file/location details.
69
- 2. Transition to Implementing via `transition.py` with "Code Review: Changes Needed" comment listing each issue.
69
+ 2. Transition to Implementing via `issues.py transition` with "Code Review: Changes Needed" comment listing each issue.
70
70
 
71
71
  ## Review Boundaries
72
72
 
@@ -47,7 +47,7 @@ Please test each criterion and let me know:
47
47
  **On issues found:**
48
48
 
49
49
  1. Document issues clearly. Ask clarifying questions if needed.
50
- 2. Transition to Implementing via `transition.py` with "QE Issues Found" comment listing each issue.
50
+ 2. Transition to Implementing via `issues.py transition` with "QE Issues Found" comment listing each issue.
51
51
 
52
52
  **On partial issues:**
53
53
 
@@ -65,11 +65,13 @@ Please test each criterion and let me know:
65
65
  ## QE Boundaries
66
66
 
67
67
  The QE agent:
68
+
68
69
  - Guides user through testing
69
70
  - Documents approval or issues
70
71
  - Transitions back to Implementing if issues found
71
72
 
72
73
  The QE agent NEVER:
74
+
73
75
  - Moves issues to Done or closes them
74
76
  - Skips documenting results
75
77
  - Approves without user confirmation
@@ -0,0 +1,33 @@
1
+ ## Summary
2
+
3
+ <!-- What changed and why. Reference the issue. -->
4
+
5
+ Resolves {ISSUE_REF}
6
+
7
+ {ISSUE_SUMMARY}
8
+
9
+ ## Changes
10
+
11
+ <!-- Key changes, grouped logically. -->
12
+
13
+ - {CHANGE_1}
14
+ - {CHANGE_2}
15
+
16
+ ## Test Plan
17
+
18
+ <!-- How to verify this works. Be specific. -->
19
+
20
+ - [ ] {TEST_1}
21
+ - [ ] {TEST_2}
22
+
23
+ ## Acceptance Criteria
24
+
25
+ <!-- Pulled from issue description. -->
26
+
27
+ {ACCEPTANCE_CRITERIA}
28
+
29
+ ## Notes
30
+
31
+ <!-- Anything reviewers should know: trade-offs, follow-up work, risks. -->
32
+
33
+ {NOTES}
@@ -20,7 +20,7 @@ Implementation agent for FlyDocs spec-driven development.
20
20
 
21
21
  ## Constraints
22
22
 
23
- - **Scripts for issue updates** — use mechanism scripts for progress comments and transitions
23
+ - **Scripts for issue updates** — use workflow dispatcher scripts for progress comments and transitions
24
24
  - Follow installed community skills for code quality patterns
25
25
  - Keep changes focused on the spec — don't over-engineer
26
26
 
@@ -2,7 +2,7 @@
2
2
  name: pm-agent
3
3
  description: "Specs, workflow, issue management. Invoke for capturing, refining, activating, reviewing, closing, or session management."
4
4
  model: inherit
5
- readonly: false
5
+ readonly: true
6
6
  is_background: false
7
7
  ---
8
8
 
@@ -20,7 +20,7 @@ Product management agent for FlyDocs spec-driven workflow.
20
20
  ## Constraints
21
21
 
22
22
  - **Do not modify code files** — this agent handles workflow, not implementation
23
- - **Scripts for all issue ops** — read the mechanism skill's SKILL.md for calling conventions
23
+ - **Scripts for all issue ops** — use workflow dispatcher scripts (`issues.py`, `projects.py`, etc.) for all operations
24
24
  - Defer technical decisions to implementation agent
25
25
 
26
26
  Read `.claude/skills/flydocs-workflow/SKILL.md` for lifecycle and stage procedures.
@@ -4,19 +4,26 @@
4
4
  "preToolUse": [
5
5
  {
6
6
  "matcher": "Bash",
7
- "command": "python3 ./.flydocs/hooks/auto-approve.py",
7
+ "command": "python3 ./.claude/hooks/auto-approve.py",
8
8
  "timeout": 5
9
9
  }
10
10
  ],
11
11
  "afterFileEdit": [
12
12
  {
13
- "command": "python3 ./.flydocs/hooks/post-edit.py",
13
+ "command": "python3 ./.claude/hooks/post-edit.py",
14
14
  "timeout": 30
15
15
  }
16
16
  ],
17
+ "afterToolUse": [
18
+ {
19
+ "matcher": "Bash",
20
+ "command": "python3 ./.claude/hooks/post-pr-check.py",
21
+ "timeout": 10
22
+ }
23
+ ],
17
24
  "beforeSubmitPrompt": [
18
25
  {
19
- "command": "python3 ./.flydocs/hooks/prompt-submit.py",
26
+ "command": "python3 ./.claude/hooks/prompt-submit.py",
20
27
  "timeout": 10
21
28
  }
22
29
  ]
@@ -31,18 +31,18 @@
31
31
  FLYDOCS_API_KEY=
32
32
 
33
33
  # ===========================================
34
- # CLOUD TIER: Direct Linear API Key (Legacy)
34
+ # CLOUD TIER: Direct Provider API Key (Legacy)
35
35
  # ===========================================
36
- # Use this ONLY if connecting directly to Linear without the relay.
37
- # Get from: Linear → Settings → API → Personal API Keys
38
- # Format: lin_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
39
- LINEAR_API_KEY=
36
+ # Use this ONLY if connecting directly to your provider without the relay.
37
+ # For Linear: Get from Linear → Settings → API → Personal API Keys (format: lin_api_...)
38
+ # For Jira: Get from Atlassian → API Tokens (format: ATATT...)
39
+ # LINEAR_API_KEY=
40
40
 
41
41
  # ===========================================
42
42
  # OPTIONAL: Figma Access Token
43
43
  # ===========================================
44
44
  # Get from: Figma → Settings → Personal Access Tokens
45
- # Only needed if using the flydocs-figma skill for design integration
45
+ # Only needed if using Figma design integration
46
46
  FIGMA_ACCESS_TOKEN=
47
47
 
48
48
  # ===========================================
@@ -1,8 +1,9 @@
1
1
  {
2
- "version": "0.6.0-alpha.13",
2
+ "version": "0.6.0-alpha.20",
3
3
  "sourceRepo": "github.com/plastrlab/flydocs-core",
4
4
  "tier": "local",
5
5
  "setupComplete": false,
6
+ "onboardComplete": false,
6
7
  "workspaceId": null,
7
8
  "paths": {
8
9
  "content": "flydocs"
@@ -1,31 +1,33 @@
1
1
  # Issue Templates
2
2
 
3
- This folder contains templates for creating and refining Linear issues. Each template includes agent instructions to ensure consistent, high-quality issue structure.
3
+ This folder contains templates for creating and refining issues. Each template includes agent instructions to ensure consistent, high-quality issue structure.
4
4
 
5
5
  ## Template Usage
6
6
 
7
7
  **Agents use these templates when:**
8
+
8
9
  - Creating new issues via `/capture`
9
10
  - Refining issues via `/refine`
10
11
  - Triaging quick captures with `triage` label
11
12
 
12
- **Humans use `quick-capture.md` in Linear** as the default template for fast idea/bug capture.
13
+ **Humans use `quick-capture.md` in their issue tracker** as the default template for fast idea/bug capture.
13
14
 
14
15
  ## Available Templates
15
16
 
16
- | Template | Purpose | When to Use |
17
- |----------|---------|-------------|
18
- | `feature.md` | New functionality | Building something new with user story |
19
- | `bug.md` | Fix defects | Something is broken |
20
- | `chore.md` | Maintenance/cleanup | Refactoring, polish, improvements |
21
- | `idea.md` | Capture concepts | Rough ideas for future exploration |
22
- | `quick-capture.md` | Fast capture | Human entry in Linear (default template) |
17
+ | Template | Purpose | When to Use |
18
+ | ------------------ | ------------------- | ----------------------------------------------- |
19
+ | `feature.md` | New functionality | Building something new with user story |
20
+ | `bug.md` | Fix defects | Something is broken |
21
+ | `chore.md` | Maintenance/cleanup | Refactoring, polish, improvements |
22
+ | `idea.md` | Capture concepts | Rough ideas for future exploration |
23
+ | `quick-capture.md` | Fast capture | Human entry in issue tracker (default template) |
23
24
 
24
25
  ## Agent Instructions
25
26
 
26
- Each template contains `<!-- AGENT: ... -->` comments that guide the AI when filling out sections. These instructions are removed from the final issue in Linear.
27
+ Each template contains `<!-- AGENT: ... -->` comments that guide the AI when filling out sections. These instructions are removed from the final issue in your provider.
27
28
 
28
29
  **Key principles:**
30
+
29
31
  1. Fill all `[bracketed]` sections with specific content
30
32
  2. Don't remove sections - mark as "N/A" if not applicable
31
33
  3. Be specific in acceptance criteria (testable, measurable)
@@ -35,12 +37,9 @@ Each template contains `<!-- AGENT: ... -->` comments that guide the AI when fil
35
37
  ## Template Evolution
36
38
 
37
39
  Update these templates as your workflow evolves:
40
+
38
41
  - Add sections that are consistently needed
39
42
  - Remove sections that are never used
40
43
  - Improve agent instructions based on what works
41
44
 
42
45
  Changes here apply to all future issues.
43
-
44
-
45
-
46
-
@@ -1,8 +1,8 @@
1
- <!--
2
- LINEAR DEFAULT TEMPLATE
1
+ <!--
2
+ PROVIDER DEFAULT TEMPLATE
3
3
  ========================
4
- Copy this to Linear as the default issue template.
5
- This is the ONLY template humans need in Linear.
4
+ Copy this to your issue tracker as the default issue template.
5
+ This is the ONLY template humans need in their issue tracker.
6
6
  Agents apply full templates via /refine.
7
7
  -->
8
8
 
@@ -29,7 +29,3 @@ Agents apply full templates via /refine.
29
29
  ---
30
30
 
31
31
  _Add `triage` label. Agent will classify and structure via `/refine`._
32
-
33
-
34
-
35
-
@@ -1 +1 @@
1
- 0.6.0-alpha.13
1
+ 0.6.0-alpha.20
@@ -1,17 +1,24 @@
1
1
  # FlyDocs Agent Instructions
2
2
 
3
- Prefer reading project documentation over guessing from training data.
4
- When performing workflow, issue management, or process tasks, consult the
5
- relevant documentation files before acting.
3
+ ## Automatic Workflow Behavior
6
4
 
7
- ## Rules
5
+ These behaviors are **always on**. Execute them automatically as part of doing
6
+ the work — do not wait for explicit commands.
8
7
 
9
- 1. **Use scripts for all issue operations.** Create, transition, comment, assign execute scripts, don't describe actions.
10
- 2. **Every status transition gets a comment.** No silent moves.
11
- 3. **Assignment required before In Progress.** Always assign before starting work.
12
- 4. **Checkboxes live in issue description, never comments.** Update the description to track progress.
13
- 5. **Session wrap posts a summary.** Summarize progress at end of session.
14
- 6. **No secrets in commits.** Never commit `.env`, credentials, or API keys.
8
+ - **Starting work on an issue** transition to In Progress (assign first if needed)
9
+ - **Completing implementation** transition to Review with summary
10
+ - **Closing** verify acceptance criteria, transition to Complete
11
+ - **Every transition gets a comment** no silent moves, no exceptions
12
+ - **Checkboxes in description, never comments** update AC as you go
13
+ - **Session wrap posts a summary** via `session.py project-update`
14
+
15
+ Use dispatcher scripts for all issue operations — execute, don't describe.
16
+
17
+ ## Efficiency
18
+
19
+ Do NOT read skill files or workflow documentation before writing code.
20
+ The rules above are already in your context. For general coding, research,
21
+ and building features — just do the work.
15
22
 
16
23
  ## Workflow
17
24
 
@@ -37,16 +44,20 @@ Detailed procedures: `.claude/skills/flydocs-workflow/`
37
44
 
38
45
  Scripts handle all issue management. The active backend (local files or cloud provider) determines the implementation.
39
46
 
40
- **Available operations:** create issue, transition status, add comment, list issues, get issue details, assign, update description, status summary.
47
+ **Available operations:** create issue, transition status, add comment, list issues, get issue details, assign, update description, estimate, priority, link, block, project update, status summary.
41
48
 
42
- Script location: `.claude/skills/flydocs-local/scripts/` or `.claude/skills/flydocs-cloud/scripts/`
49
+ Scripts use grouped dispatchers in `.claude/skills/flydocs-workflow/scripts/`:
43
50
 
44
- ## Premium Skills
51
+ | Dispatcher | Operations |
52
+ | ---------------- | ------------------------------------------------------------ |
53
+ | `issues.py` | create, get, list, transition, assign, update, comment, etc. |
54
+ | `projects.py` | list-projects, create-project, milestones, cycles |
55
+ | `workspace.py` | validate, labels, statuses, teams, config, identity |
56
+ | `session.py` | project-update, status-summary |
57
+ | `graph_*.py` | build, query, update, session recording |
58
+ | `push/pull_*.py` | Service descriptor sync (cloud tier) |
45
59
 
46
- | Skill | Documentation |
47
- | ----------------- | ----------------------------------------------------------------------- |
48
- | Figma Integration | `.claude/skills/flydocs-figma/` — design extraction, token mapping |
49
- | Cost Estimation | `.claude/skills/flydocs-estimates/` — AI token/labor estimates (opt-in) |
60
+ The unified client auto-detects tier (cloud vs local) — scripts never check tier directly.
50
61
 
51
62
  ## Writing Style
52
63
 
@@ -80,26 +91,22 @@ Follow these rules in every response for consistent, scannable output.
80
91
 
81
92
  ## Project Context
82
93
 
83
- | File | Purpose |
84
- | ---------------------------- | ------------------------------------------------------- |
85
- | `flydocs/context/project.md` | Product scope, tech stack, active priorities |
86
- | `.flydocs/config.json` | Configuration — tier, provider, labels, active projects |
94
+ | File | Purpose |
95
+ | ------------------------------ | ------------------------------------------------- |
96
+ | `flydocs/context/project.md` | Product scope, tech stack, active priorities |
97
+ | `flydocs/context/service.json` | Service descriptor, topology, cross-repo context |
98
+ | `.flydocs/config.json` | Tier, provider, labels, active projects, topology |
87
99
 
88
100
  <!-- flydocs:skills-manifest:start -->
89
101
 
90
102
  ## Skills Index
91
103
 
92
- IMPORTANT: Prefer skill-led reasoning over pre-training reasoning.
93
- Consult the relevant skill BEFORE writing code or making workflow decisions.
94
-
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 |
104
+ Consult the workflow skill for **issue operations and status transitions only**.
105
+ For general coding tasks, skip this just write code.
106
+
107
+ | Skill | Triggers | Entry |
108
+ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
109
+ | flydocs-workflow | create issue, capture issue, log a bug, add to backlog, transition, move to, mark as, set status, assign issue, close issue, start session, wrap session, project update, status update, add comment, set priority, set estimate | .claude/skills/flydocs-workflow/SKILL.md |
103
110
 
104
111
  <!-- flydocs:skills-manifest:end -->
105
112
 
@@ -30,8 +30,6 @@ FlyDocs will **never overwrite** these files during updates - they're yours to m
30
30
  ├── config.json # Tier, provider settings, workspace config
31
31
  ├── version # For upgrade detection
32
32
  ├── rules/ # Workflow rules
33
- ├── scripts/ # Automation scripts
34
- ├── hooks/ # Workflow hooks
35
33
  └── templates/ # Issue templates (source)
36
34
 
37
35
  flydocs/ # PROJECT CONTENT (evolves with project)
@@ -153,7 +151,7 @@ See `.flydocs/config.json` for:
153
151
  - FlyDocs version
154
152
  - `tier` - "local" (free) or "cloud" (connected to provider)
155
153
  - `paths.content` - This folder name (default: "flydocs")
156
- - `provider.type` - Issue tracker provider (null for local, "linear" for cloud)
154
+ - `provider.type` - Issue tracker provider (null for local, e.g. "linear", "jira" for cloud)
157
155
  - `workspace.activeProjects` - Array of active project IDs (cloud tier)
158
156
  - `workspace.product` - Product identity (name, labelIds, icon, color)
159
157
  - `statusMapping` - Workflow state names