@cliangdev/flux-plugin 0.1.0 → 0.2.0-dev.359209a

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 (113) hide show
  1. package/README.md +55 -22
  2. package/agents/coder.md +317 -0
  3. package/agents/critic.md +174 -0
  4. package/agents/researcher.md +146 -0
  5. package/agents/verifier.md +149 -0
  6. package/bin/install.cjs +390 -0
  7. package/commands/breakdown.md +48 -10
  8. package/commands/dashboard.md +29 -0
  9. package/commands/flux.md +218 -94
  10. package/commands/implement.md +167 -17
  11. package/commands/linear.md +172 -0
  12. package/commands/prd.md +997 -82
  13. package/manifest.json +16 -0
  14. package/package.json +17 -11
  15. package/skills/agent-creator/SKILL.md +2 -0
  16. package/skills/epic-template/SKILL.md +2 -0
  17. package/skills/flux-orchestrator/SKILL.md +68 -76
  18. package/skills/prd-writer/SKILL.md +761 -0
  19. package/skills/ux-ui-design/SKILL.md +346 -0
  20. package/skills/ux-ui-design/references/design-tokens.md +359 -0
  21. package/src/__tests__/version.test.ts +37 -0
  22. package/src/adapters/local/.gitkeep +0 -0
  23. package/src/dashboard/__tests__/api.test.ts +211 -0
  24. package/src/dashboard/browser.ts +35 -0
  25. package/src/dashboard/public/app.js +869 -0
  26. package/src/dashboard/public/index.html +90 -0
  27. package/src/dashboard/public/styles.css +807 -0
  28. package/src/dashboard/public/vendor/highlight.css +10 -0
  29. package/src/dashboard/public/vendor/highlight.min.js +8422 -0
  30. package/src/dashboard/public/vendor/marked.min.js +2210 -0
  31. package/src/dashboard/server.ts +296 -0
  32. package/src/dashboard/watchers.ts +83 -0
  33. package/src/server/__tests__/config.test.ts +163 -0
  34. package/src/server/adapters/__tests__/a-client-linear.test.ts +197 -0
  35. package/src/server/adapters/__tests__/adapter-factory.test.ts +230 -0
  36. package/src/server/adapters/__tests__/dependency-ops.test.ts +429 -0
  37. package/src/server/adapters/__tests__/document-ops.test.ts +306 -0
  38. package/src/server/adapters/__tests__/linear-adapter.test.ts +91 -0
  39. package/src/server/adapters/__tests__/linear-config.test.ts +425 -0
  40. package/src/server/adapters/__tests__/linear-criteria-parser.test.ts +287 -0
  41. package/src/server/adapters/__tests__/linear-description-test.ts +238 -0
  42. package/src/server/adapters/__tests__/linear-epic-crud.test.ts +496 -0
  43. package/src/server/adapters/__tests__/linear-mappers-description.test.ts +276 -0
  44. package/src/server/adapters/__tests__/linear-mappers-epic.test.ts +294 -0
  45. package/src/server/adapters/__tests__/linear-mappers-prd.test.ts +300 -0
  46. package/src/server/adapters/__tests__/linear-mappers-task.test.ts +197 -0
  47. package/src/server/adapters/__tests__/linear-prd-crud.test.ts +620 -0
  48. package/src/server/adapters/__tests__/linear-stats.test.ts +450 -0
  49. package/src/server/adapters/__tests__/linear-task-crud.test.ts +534 -0
  50. package/src/server/adapters/__tests__/linear-types.test.ts +243 -0
  51. package/src/server/adapters/__tests__/status-ops.test.ts +441 -0
  52. package/src/server/adapters/factory.ts +90 -0
  53. package/src/server/adapters/index.ts +9 -0
  54. package/src/server/adapters/linear/adapter.ts +1141 -0
  55. package/src/server/adapters/linear/client.ts +169 -0
  56. package/src/server/adapters/linear/config.ts +152 -0
  57. package/src/server/adapters/linear/helpers/criteria-parser.ts +197 -0
  58. package/src/server/adapters/linear/helpers/index.ts +7 -0
  59. package/src/server/adapters/linear/index.ts +16 -0
  60. package/src/server/adapters/linear/mappers/description.ts +136 -0
  61. package/src/server/adapters/linear/mappers/epic.ts +81 -0
  62. package/src/server/adapters/linear/mappers/index.ts +27 -0
  63. package/src/server/adapters/linear/mappers/prd.ts +178 -0
  64. package/src/server/adapters/linear/mappers/task.ts +82 -0
  65. package/src/server/adapters/linear/types.ts +264 -0
  66. package/src/server/adapters/local-adapter.ts +1009 -0
  67. package/src/server/adapters/types.ts +293 -0
  68. package/src/server/config.ts +73 -0
  69. package/src/server/db/__tests__/queries.test.ts +473 -0
  70. package/src/server/db/ids.ts +17 -0
  71. package/src/server/db/index.ts +69 -0
  72. package/src/server/db/queries.ts +142 -0
  73. package/src/server/db/refs.ts +60 -0
  74. package/src/server/db/schema.ts +97 -0
  75. package/src/server/db/sqlite.ts +10 -0
  76. package/src/server/index.ts +81 -0
  77. package/src/server/tools/__tests__/crud.test.ts +411 -0
  78. package/src/server/tools/__tests__/get-version.test.ts +27 -0
  79. package/src/server/tools/__tests__/mcp-interface.test.ts +479 -0
  80. package/src/server/tools/__tests__/query.test.ts +405 -0
  81. package/src/server/tools/__tests__/z-configure-linear.test.ts +511 -0
  82. package/src/server/tools/__tests__/z-get-linear-url.test.ts +108 -0
  83. package/src/server/tools/configure-linear.ts +373 -0
  84. package/src/server/tools/create-epic.ts +44 -0
  85. package/src/server/tools/create-prd.ts +40 -0
  86. package/src/server/tools/create-task.ts +47 -0
  87. package/src/server/tools/criteria.ts +50 -0
  88. package/src/server/tools/delete-entity.ts +76 -0
  89. package/src/server/tools/dependencies.ts +55 -0
  90. package/src/server/tools/get-entity.ts +240 -0
  91. package/src/server/tools/get-linear-url.ts +28 -0
  92. package/src/server/tools/get-stats.ts +52 -0
  93. package/src/server/tools/get-version.ts +20 -0
  94. package/src/server/tools/index.ts +158 -0
  95. package/src/server/tools/init-project.ts +108 -0
  96. package/src/server/tools/query-entities.ts +167 -0
  97. package/src/server/tools/render-status.ts +219 -0
  98. package/src/server/tools/update-entity.ts +140 -0
  99. package/src/server/tools/update-status.ts +166 -0
  100. package/src/server/utils/__tests__/mcp-response.test.ts +331 -0
  101. package/src/server/utils/logger.ts +9 -0
  102. package/src/server/utils/mcp-response.ts +254 -0
  103. package/src/server/utils/status-transitions.ts +160 -0
  104. package/src/status-line/__tests__/status-line.test.ts +215 -0
  105. package/src/status-line/index.ts +147 -0
  106. package/src/utils/__tests__/chalk-import.test.ts +32 -0
  107. package/src/utils/__tests__/display.test.ts +97 -0
  108. package/src/utils/__tests__/status-renderer.test.ts +310 -0
  109. package/src/utils/display.ts +62 -0
  110. package/src/utils/status-renderer.ts +214 -0
  111. package/src/version.ts +5 -0
  112. package/dist/server/index.js +0 -86929
  113. package/skills/prd-template/SKILL.md +0 -240
package/manifest.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "./manifest.schema.json",
3
+ "version": "1.0.0",
4
+ "structure": {
5
+ "commands": ["flux.md", "prd.md", "breakdown.md", "implement.md"],
6
+ "skills": [
7
+ "agent-creator",
8
+ "epic-template",
9
+ "flux-orchestrator",
10
+ "prd-writer",
11
+ "ux-ui-design"
12
+ ],
13
+ "agents": ["coder.md", "critic.md", "researcher.md", "verifier.md"],
14
+ "hooks": []
15
+ }
16
+ }
package/package.json CHANGED
@@ -1,32 +1,38 @@
1
1
  {
2
2
  "name": "@cliangdev/flux-plugin",
3
- "version": "0.1.0",
3
+ "version": "0.2.0-dev.359209a",
4
4
  "description": "Claude Code plugin for AI-first workflow orchestration with MCP server",
5
5
  "type": "module",
6
6
  "main": "./dist/server/index.js",
7
7
  "bin": {
8
- "flux-plugin": "./dist/server/index.js"
8
+ "flux-plugin": "./bin/install.cjs"
9
9
  },
10
10
  "files": [
11
- "dist/",
11
+ "bin/install.cjs",
12
+ "src/",
12
13
  "skills/",
13
- "commands/"
14
+ "commands/",
15
+ "agents/",
16
+ "manifest.json"
14
17
  ],
15
18
  "scripts": {
16
19
  "dev": "bun run src/server/index.ts",
17
- "build": "bun build src/server/index.ts --outdir dist/server --target node",
18
- "postbuild": "node -e \"const fs=require('fs');const f='dist/server/index.js';const c=fs.readFileSync(f,'utf-8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"",
19
- "build:compile": "bun build --compile --outfile bin/flux-server src/server/index.ts && bun build --compile --outfile bin/flux-status src/status-line/index.ts",
20
- "build:compile:server": "bun build --compile --outfile bin/flux-server src/server/index.ts",
21
- "build:compile:status": "bun build --compile --outfile bin/flux-status src/status-line/index.ts",
22
- "prepublishOnly": "bun run build",
20
+ "build": "bun build --compile --outfile bin/flux-server src/server/index.ts && bun build --compile --outfile bin/flux-status src/status-line/index.ts && bun build --compile --outfile bin/flux-dashboard src/dashboard/server.ts",
21
+ "build:server": "bun build --compile --outfile bin/flux-server src/server/index.ts",
22
+ "build:status": "bun build --compile --outfile bin/flux-status src/status-line/index.ts",
23
+ "build:dashboard": "bun build --compile --outfile bin/flux-dashboard src/dashboard/server.ts",
24
+ "dev:dashboard": "bun run src/dashboard/server.ts",
25
+ "validate": "node scripts/validate-structure.cjs",
26
+ "test:integration": "bun test scripts/__tests__/integration.test.ts --timeout 120000",
27
+ "prepublishOnly": "bun run validate && bun run test:integration",
23
28
  "test": "bun test",
24
29
  "test:linear-description": "bun run src/server/adapters/__tests__/linear-description-test.ts",
25
30
  "typecheck": "tsc --noEmit",
26
31
  "lint": "biome check .",
27
32
  "lint:fix": "biome check --write .",
28
33
  "format": "biome format --write .",
29
- "verify-release": "bun run scripts/verify-release.ts"
34
+ "verify-release": "bun run scripts/verify-release.ts",
35
+ "release": "./scripts/release.sh"
30
36
  },
31
37
  "repository": {
32
38
  "type": "git",
@@ -1,5 +1,7 @@
1
1
  ---
2
+ name: flux:agent-creator
2
3
  description: Guide for creating effective subagents. Use when users want to create a new agent that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
4
+ user-invocable: false
3
5
  ---
4
6
 
5
7
  # Agent Creator Skill
@@ -1,5 +1,7 @@
1
1
  ---
2
+ name: flux:epic-template
2
3
  description: Epic and task structure patterns for Flux. Use when breaking PRDs into epics and tasks. Epics should be self-contained with clear acceptance criteria.
4
+ user-invocable: false
3
5
  ---
4
6
 
5
7
  # Epic Template Skill
@@ -1,21 +1,25 @@
1
1
  ---
2
+ name: flux:flux-orchestrator
2
3
  description: Orchestrates Flux workflows based on project context
4
+ user-invocable: false
3
5
  ---
4
6
 
5
7
  # Flux Orchestrator Skill
6
8
 
7
- This skill is automatically active when working in a Flux project. It provides context about available tools and workflow patterns.
9
+ This skill is automatically active when working in a Flux project. It provides context about available tools, workflow patterns, and integration options.
8
10
 
9
11
  ## Available MCP Tools
10
12
 
11
13
  ### Query Tools
12
- - `get_project_context` - Check if project initialized, get name/vision/prefix
13
14
  - `get_stats` - Get PRD/epic/task counts by status
14
15
  - `get_entity` - Fetch entity by ref with optional includes (criteria, tasks, dependencies)
15
16
  - `query_entities` - Search entities by type, status, parent ref
17
+ - `render_status` - Get formatted project status with progress bars
18
+ - `get_version` - Get Flux plugin version
16
19
 
17
20
  ### Mutation Tools
18
21
  - `init_project` - Initialize new .flux/ directory with project.json and database
22
+ - `configure_linear` - Configure Linear integration (supports interactive mode)
19
23
  - `create_prd` - Create a new PRD
20
24
  - `create_epic` - Create an epic linked to a PRD
21
25
  - `create_task` - Create a task linked to an epic
@@ -29,102 +33,90 @@ This skill is automatically active when working in a Flux project. It provides c
29
33
  - `add_criteria` - Add acceptance criterion to epic or task
30
34
  - `mark_criteria_met` - Mark criterion as satisfied
31
35
 
32
- ## Workflow States
36
+ ## Available Commands
37
+
38
+ | Command | Purpose |
39
+ |---------|---------|
40
+ | `/flux` | Project init, status, and workflow routing |
41
+ | `/flux:linear` | Connect project to Linear (interactive setup) |
42
+ | `/flux:prd` | Create PRDs through discovery, research, and guided writing |
43
+ | `/flux:breakdown` | Break approved PRD into epics and tasks |
44
+ | `/flux:implement` | Implement tasks with TDD workflow |
45
+
46
+ ## Available Skills
33
47
 
34
- The Flux project progresses through these states:
48
+ | Skill | Purpose | Auto-loaded When |
49
+ |-------|---------|------------------|
50
+ | `flux:prd-writer` | PRD structure, templates, and quality guidelines | Creating or refining PRDs |
51
+ | `flux:epic-template` | Epic/task structure and breakdown patterns | Breaking down PRDs |
52
+ | `flux:agent-creator` | Guide for creating specialized subagents | Building new agents |
35
53
 
36
- 1. **Uninitialized** - No .flux/ directory
37
- - Action: Run `/flux` to initialize
54
+ ## Workflow States
55
+
56
+ ```
57
+ Uninitialized → Initialized → PRD Draft → Pending Review → Reviewed → Approved → Breakdown Ready → In Progress → Complete
58
+
59
+ (optional) Linear Connected
60
+ ```
38
61
 
39
- 2. **No PRDs** - Project initialized but empty
40
- - Action: Run `/flux:prd` to create first PRD
62
+ ### PRD Status Transitions
63
+ ```
64
+ DRAFT → PENDING_REVIEW → REVIEWED → APPROVED → BREAKDOWN_READY → COMPLETED
65
+ ↓ ↓
66
+ DRAFT (revise) DRAFT (revise)
67
+ ```
41
68
 
42
- 3. **PRD Draft** - PRD created but needs review
43
- - Action: Review and submit for approval or refine
69
+ ### Epic/Task Statuses
70
+ - `PENDING` `IN_PROGRESS` `COMPLETED`
44
71
 
45
- 4. **PRD Pending Review** - PRD submitted for review
46
- - Action: Run critique agent, then approve or revise
72
+ ## Backend Adapters
47
73
 
48
- 5. **PRD Reviewed** - Critique complete
49
- - Action: Address feedback, then approve or revise to DRAFT
74
+ Flux supports multiple backends via the adapter pattern:
50
75
 
51
- 6. **PRD Approved** - Ready for epic breakdown
52
- - Action: Run `/flux:breakdown` to create epics
76
+ | Adapter | Storage | Use Case |
77
+ |---------|---------|----------|
78
+ | `local` | SQLite (.flux/flux.db) | Default, offline-first |
79
+ | `linear` | Linear API | Team collaboration, issue tracking |
53
80
 
54
- 7. **Breakdown Ready** - Epics and tasks created
55
- - Action: Run `/flux:implement` to start coding
81
+ ### Switching to Linear
56
82
 
57
- 8. **Implementation In Progress** - Tasks IN_PROGRESS
58
- - Action: Continue implementing current task
83
+ Use `configure_linear` with interactive mode:
84
+ 1. `{interactive: true}` returns teams list
85
+ 2. `{interactive: true, teamId: "..."}` → returns projects list
86
+ 3. `{teamId: "...", projectName/existingProjectId: "..."}` → configures
59
87
 
60
- 9. **Complete** - All tasks COMPLETED
61
- - Action: Review and create PR
88
+ Or run `/flux:linear` for guided setup.
62
89
 
63
90
  ## Entity References
64
91
 
65
- All entities have a reference format: `{PREFIX}-{TYPE}{NUMBER}`
92
+ Format: `{PREFIX}-{TYPE}{NUMBER}`
66
93
 
67
94
  - PRD: `MSA-P1`, `MSA-P2`
68
95
  - Epic: `MSA-E1`, `MSA-E2`
69
96
  - Task: `MSA-T1`, `MSA-T2`
70
97
 
71
- The prefix is generated from the project name during initialization.
72
-
73
- ## Status Values
74
-
75
- ### PRD Statuses (6-stage workflow)
76
- - `DRAFT` - Initial state, being created/refined
77
- - `PENDING_REVIEW` - Submitted for critique
78
- - `REVIEWED` - Critique complete, awaiting approval
79
- - `APPROVED` - Ready for epic breakdown
80
- - `BREAKDOWN_READY` - Epics and tasks created
81
- - `COMPLETED` - All epics done
82
-
83
- ### Valid PRD Transitions
84
- ```
85
- DRAFT → PENDING_REVIEW
86
- PENDING_REVIEW → REVIEWED | DRAFT (revise)
87
- REVIEWED → APPROVED | DRAFT (revise)
88
- APPROVED → BREAKDOWN_READY
89
- BREAKDOWN_READY → COMPLETED
90
- ```
91
-
92
- ### Epic/Task Statuses
93
- - `PENDING` - Not started
94
- - `IN_PROGRESS` - Currently being worked on
95
- - `COMPLETED` - Done
96
-
97
- ## Confidence-Based Autonomy
98
-
99
- The orchestrator uses confidence levels to determine autonomy:
100
-
101
- | Confidence | Behavior | Example |
102
- |------------|----------|---------|
103
- | > 80% | Auto-execute, inform user | "I'm creating the epic structure..." |
104
- | 50-80% | Suggest action, wait for confirmation | "Ready to break down into tasks. Proceed?" |
105
- | < 50% | Ask clarifying question | "Should we research this technology first?" |
106
-
107
- ### Confidence Indicators
108
- - **High confidence (>80%)**: Clear next step, no ambiguity, user has been responsive
109
- - **Medium confidence (50-80%)**: Reasonable next step, some uncertainty
110
- - **Low confidence (<50%)**: Multiple valid paths, unclear requirements, unfamiliar tech
111
-
112
98
  ## Available Subagents
113
99
 
114
- ### Research Agent
115
- - **Trigger**: Unfamiliar technology mentioned, confidence < 70%
116
- - **Purpose**: Gather information about libraries, frameworks, APIs
100
+ ### Research Agent (`flux:flux-researcher`)
101
+ - **Trigger**: Unfamiliar technology, confidence < 70%
117
102
  - **Tools**: Context7, WebSearch, WebFetch
118
103
 
119
- ### Critique Agent
120
- - **Trigger**: PRD status becomes PENDING_REVIEW
121
- - **Purpose**: Analyze feasibility, scope, risks
122
- - **Output**: Structured critique with recommendations
104
+ ### Critique Agent (`flux:flux-critic`)
105
+ - **Trigger**: PRD submitted for review
106
+ - **Output**: Feasibility analysis, risks, recommendations
107
+
108
+ ### Coder Agent (`flux:flux-coder`)
109
+ - **Trigger**: Task implementation
110
+ - **Workflow**: TDD - write tests, implement, verify
111
+
112
+ ### Verifier Agent (`flux:flux-verifier`)
113
+ - **Trigger**: After implementation
114
+ - **Purpose**: Verify acceptance criteria coverage
123
115
 
124
116
  ## Best Practices
125
117
 
126
- 1. **Check context first** - Always call `get_project_context` before taking actions
127
- 2. **Use refs, not IDs** - Tools accept human-readable refs like `MSA-E1`
128
- 3. **Validate status transitions** - Use `update_status` which enforces valid transitions
129
- 4. **Include related data** - Use `include` parameter to fetch nested entities in one call
130
- 5. **Handle errors gracefully** - Tools return errors with codes, display user-friendly messages
118
+ 1. **Handle PROJECT_NOT_INITIALIZED** - If any tool returns this error, direct user to run `/flux` to initialize the project
119
+ 2. **Use refs, not IDs** - Tools accept `MSA-E1` format
120
+ 3. **Use render_status** - For visual project overview
121
+ 4. **Validate transitions** - `update_status` enforces valid transitions
122
+ 5. **Include related data** - Use `include` param to fetch nested entities