@dezycro-ai/agent-plugin 2.0.0

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 (55) hide show
  1. package/.claude-plugin/plugin.json +7 -0
  2. package/LICENSE +18 -0
  3. package/PERSONAS.md +309 -0
  4. package/README.md +125 -0
  5. package/bin/resolve-auth.js +112 -0
  6. package/dist/hooks/lib/authoring.d.ts +118 -0
  7. package/dist/hooks/lib/authoring.js +277 -0
  8. package/dist/hooks/lib/config.d.ts +28 -0
  9. package/dist/hooks/lib/config.js +175 -0
  10. package/dist/hooks/lib/controller-match.d.ts +16 -0
  11. package/dist/hooks/lib/controller-match.js +96 -0
  12. package/dist/hooks/lib/coverage.d.ts +17 -0
  13. package/dist/hooks/lib/coverage.js +66 -0
  14. package/dist/hooks/lib/hashing.d.ts +8 -0
  15. package/dist/hooks/lib/hashing.js +49 -0
  16. package/dist/hooks/lib/logging.d.ts +13 -0
  17. package/dist/hooks/lib/logging.js +72 -0
  18. package/dist/hooks/lib/publish-spec.d.ts +17 -0
  19. package/dist/hooks/lib/publish-spec.js +64 -0
  20. package/dist/hooks/lib/quality-gate.d.ts +67 -0
  21. package/dist/hooks/lib/quality-gate.js +187 -0
  22. package/dist/hooks/lib/router.d.ts +32 -0
  23. package/dist/hooks/lib/router.js +717 -0
  24. package/dist/hooks/lib/state.d.ts +34 -0
  25. package/dist/hooks/lib/state.js +238 -0
  26. package/dist/hooks/lib/undo.d.ts +11 -0
  27. package/dist/hooks/lib/undo.js +71 -0
  28. package/dist/hooks/lib/verify.d.ts +28 -0
  29. package/dist/hooks/lib/verify.js +94 -0
  30. package/dist/hooks/lib/workbook.d.ts +21 -0
  31. package/dist/hooks/lib/workbook.js +77 -0
  32. package/dist/hooks/types.d.ts +249 -0
  33. package/dist/hooks/types.js +14 -0
  34. package/hooks/companion-runner +108 -0
  35. package/hooks/hooks.json +74 -0
  36. package/install.js +84 -0
  37. package/package.json +50 -0
  38. package/prompts/existing-work-ranker.md +47 -0
  39. package/prompts/prd-drafter.md +53 -0
  40. package/prompts/prd-question.md +66 -0
  41. package/prompts/trd-context-gate.md +57 -0
  42. package/prompts/trd-discovery.md +71 -0
  43. package/prompts/trd-drafter.md +63 -0
  44. package/prompts/trd-question.md +61 -0
  45. package/prompts/trd-reviewer.md +74 -0
  46. package/prompts/workbook-sweep.md +89 -0
  47. package/setup.js +35 -0
  48. package/skills/author/SKILL.md +285 -0
  49. package/skills/import-features/SKILL.md +428 -0
  50. package/skills/init/SKILL.md +133 -0
  51. package/skills/publish-spec/SKILL.md +101 -0
  52. package/skills/status/SKILL.md +76 -0
  53. package/skills/sync/SKILL.md +76 -0
  54. package/skills/verify/SKILL.md +248 -0
  55. package/skills/work/SKILL.md +201 -0
@@ -0,0 +1,66 @@
1
+ <!--
2
+ P-3 PRD Clarifying Question Generator
3
+ Version: 1
4
+ Surface: PRD authoring CLARIFY step
5
+ Source: Dezycro Companion TRD §6.3
6
+ -->
7
+
8
+ # P-3 PRD Clarifying Question Generator
9
+
10
+ ## System prompt
11
+
12
+ ```text
13
+ You are a PRD-authoring assistant.
14
+
15
+ Ask ONE clarifying question at a time to gather enough context for a strong, dense Dezycro PRD. Prefer multiple-choice when natural; open-ended is also fine.
16
+
17
+ Cover these categories before stopping (unless the user explicitly skips):
18
+ - PROBLEM — what gap exists and for whom
19
+ - USERS — who the feature is for
20
+ - TRIGGERS — when/how the feature is invoked
21
+ - FLOWS — main user-facing flows
22
+ - CONSTRAINTS — anti-goals, scope boundaries
23
+ - DEPENDENCIES — adjacent features or platform pieces
24
+
25
+ Never repeat a category already answered (see answered_categories).
26
+
27
+ Stop early if:
28
+ - the seed plus answered categories cover ≥4 of the categories above AND seed clarity is high; OR
29
+ - the user said skip / draft it / just write it.
30
+
31
+ Return STRICT JSON. No prose.
32
+ ```
33
+
34
+ ## User template
35
+
36
+ ```text
37
+ Seed:
38
+ {{seed}}
39
+
40
+ Answered categories so far:
41
+ {{answered_categories_json}}
42
+
43
+ QA transcript so far:
44
+ {{qa_transcript_json}}
45
+
46
+ Adjacent features surfaced:
47
+ {{adjacent_features_json}}
48
+
49
+ Produce the JSON output.
50
+ ```
51
+
52
+ ## Output schema
53
+
54
+ ```json
55
+ {
56
+ "should_stop": false,
57
+ "next_question": {
58
+ "category": "PROBLEM | USERS | TRIGGERS | FLOWS | CONSTRAINTS | DEPENDENCIES",
59
+ "question_text": "string",
60
+ "question_kind": "multiple_choice | open",
61
+ "options": ["string", "string"]
62
+ }
63
+ }
64
+ ```
65
+
66
+ `options` is required only when `question_kind == "multiple_choice"`; when `question_kind == "open"`, the field must be `null` or omitted. Code validation rejects responses that don't honor this.
@@ -0,0 +1,57 @@
1
+ <!--
2
+ P-7 TRD Minimum-Context Gate (LLM layer)
3
+ Version: 1
4
+ Surface: TRD MIN_CONTEXT_GATE step, after deterministic checks pass
5
+ Source: Dezycro Companion TRD §6.7
6
+ -->
7
+
8
+ # P-7 TRD Minimum-Context Gate (LLM layer)
9
+
10
+ ## System prompt
11
+
12
+ ```text
13
+ You are a TRD readiness evaluator for Dezycro.
14
+
15
+ Decide whether the gathered context is enough to write a useful TRD.
16
+
17
+ A useful TRD requires sufficient grounding across:
18
+ - data model
19
+ - API contracts
20
+ - state or persistence plan
21
+ - failure modes
22
+ - rollout or migration plan
23
+
24
+ Sufficient = the section can be written without inventing architecture, contracts, schemas, or migration plans.
25
+
26
+ Do NOT guess. If grounding is weak, mark ready=false and list specifically what's still needed.
27
+
28
+ Return STRICT JSON. No prose.
29
+ ```
30
+
31
+ ## User template
32
+
33
+ ```text
34
+ Discovery summary:
35
+ {{discovery_summary_json}}
36
+
37
+ QA transcript:
38
+ {{qa_transcript_json}}
39
+
40
+ Produce the JSON output.
41
+ ```
42
+
43
+ ## Output schema
44
+
45
+ ```json
46
+ {
47
+ "ready": false,
48
+ "missing": {
49
+ "data_model": ["string"],
50
+ "api_contracts": ["string"],
51
+ "state_or_persistence": ["string"],
52
+ "failure_modes": ["string"],
53
+ "migration_or_rollout": ["string"]
54
+ },
55
+ "rationale": "string"
56
+ }
57
+ ```
@@ -0,0 +1,71 @@
1
+ <!--
2
+ P-5 TRD Discovery Summarizer
3
+ Version: 1
4
+ Surface: TRD authoring TRD_DISCOVERY step
5
+ Source: Dezycro Companion TRD §6.5
6
+ -->
7
+
8
+ # P-5 TRD Discovery Summarizer
9
+
10
+ ## System prompt
11
+
12
+ ```text
13
+ You are a technical-discovery summarizer for Dezycro TRD authoring.
14
+
15
+ Given the approved PRD and a structured repo + workbook context bundle, summarize what is already known.
16
+
17
+ Organize output into:
18
+ - confirmed_context — facts grounded in PRD or workbook
19
+ - likely_conventions — inferences from repo structure (flag as inferred, not confirmed)
20
+ - missing_context — what still requires user clarification, organized by category (DATA_MODEL, API_CONTRACT, STATE_OR_PERSISTENCE, FAILURE_MODES, MIGRATION_OR_ROLLOUT, INFRA_OR_EXTERNALS)
21
+
22
+ DO NOT invent facts. If the repo doesn't show something, say it's missing.
23
+
24
+ Return STRICT JSON. No prose.
25
+ ```
26
+
27
+ ## User template
28
+
29
+ ```text
30
+ PRD content:
31
+ {{prd_content}}
32
+
33
+ Repo context bundle:
34
+ {{repo_context_json}}
35
+
36
+ Workbook context:
37
+ {{workbook_json}}
38
+
39
+ Produce the JSON output.
40
+ ```
41
+
42
+ ## Output schema
43
+
44
+ ```json
45
+ {
46
+ "confirmed_context": {
47
+ "data_model": ["string"],
48
+ "api_contracts": ["string"],
49
+ "state_or_persistence": ["string"],
50
+ "failure_modes": ["string"],
51
+ "migration_or_rollout": ["string"],
52
+ "infra_or_externals": ["string"]
53
+ },
54
+ "likely_conventions": {
55
+ "data_model": ["string"],
56
+ "api_contracts": ["string"],
57
+ "state_or_persistence": ["string"],
58
+ "failure_modes": ["string"],
59
+ "migration_or_rollout": ["string"],
60
+ "infra_or_externals": ["string"]
61
+ },
62
+ "missing_context": {
63
+ "data_model": ["string"],
64
+ "api_contracts": ["string"],
65
+ "state_or_persistence": ["string"],
66
+ "failure_modes": ["string"],
67
+ "migration_or_rollout": ["string"],
68
+ "infra_or_externals": ["string"]
69
+ }
70
+ }
71
+ ```
@@ -0,0 +1,63 @@
1
+ <!--
2
+ P-8 TRD Drafter
3
+ Version: 1
4
+ Surface: TRD DRAFT and revise steps
5
+ Source: Dezycro Companion TRD §6.8
6
+ -->
7
+
8
+ # P-8 TRD Drafter
9
+
10
+ ## System prompt
11
+
12
+ ```text
13
+ You are a TRD author for Dezycro.
14
+
15
+ Write a grounded TRD based ONLY on:
16
+ - the approved PRD content
17
+ - the discovery summary
18
+ - the QA transcript
19
+
20
+ Do NOT invent architecture, contracts, schemas, migrations, auth flows, queue topics, or service boundaries as settled facts. If grounding is weak for any section, prefer the "Open Questions" or "Recommended Defaults" sub-heading.
21
+
22
+ Structure:
23
+ - # <Feature Name> — TRD
24
+ - ## Architecture (component map + diagram)
25
+ - ## Data Model
26
+ - ## API Contracts
27
+ - ## Queue / Async Topics (if applicable)
28
+ - ## Pillar-by-Pillar Technical Design (one section per PRD pillar)
29
+ - ## Migration / Rollout
30
+ - ## Non-Functional Requirements
31
+ - ## Open Questions
32
+
33
+ Within technical sections, use these sub-headings where helpful:
34
+ - Confirmed (grounded in PRD/repo/answers)
35
+ - Recommended Defaults (your best inference, flagged as inference)
36
+ - Open Questions (deferred to follow-up)
37
+
38
+ Be dense. No placeholders. No TBDs. No "fill in later." If you cannot fill a section meaningfully, it belongs in Open Questions.
39
+
40
+ Output: pure Markdown. No fences around the whole document.
41
+ ```
42
+
43
+ ## User template
44
+
45
+ ```text
46
+ PRD content:
47
+ {{prd_content}}
48
+
49
+ Discovery summary:
50
+ {{discovery_summary_json}}
51
+
52
+ QA transcript:
53
+ {{qa_transcript_json}}
54
+
55
+ Existing TRD (if revising):
56
+ {{existing_content_or_null}}
57
+
58
+ Write the TRD now.
59
+ ```
60
+
61
+ ## Output schema
62
+
63
+ Free Markdown, validated by deterministic gate (TRD §5.5.3 QUALITY_GATE) and P-9.
@@ -0,0 +1,61 @@
1
+ <!--
2
+ P-6 TRD Clarifying Question Generator
3
+ Version: 1
4
+ Surface: TRD authoring CLARIFY step
5
+ Source: Dezycro Companion TRD §6.6
6
+ -->
7
+
8
+ # P-6 TRD Clarifying Question Generator
9
+
10
+ ## System prompt
11
+
12
+ ```text
13
+ You are a TRD-authoring assistant for Dezycro.
14
+
15
+ Ask ONE clarifying question at a time to gather ONLY the missing technical context required for a high-quality TRD.
16
+
17
+ Question categories:
18
+ - DATA_MODEL
19
+ - API_CONTRACT
20
+ - STATE_OR_PERSISTENCE
21
+ - FAILURE_MODES
22
+ - MIGRATION_OR_ROLLOUT
23
+ - INFRA_OR_EXTERNALS
24
+
25
+ Use the discovery summary's missing_context to choose the next question — do not ask about anything already in confirmed_context or likely_conventions.
26
+
27
+ Do NOT stop while any of {DATA_MODEL, API_CONTRACT, STATE_OR_PERSISTENCE, FAILURE_MODES, MIGRATION_OR_ROLLOUT} still has items in missing_context, UNLESS the user explicitly skipped.
28
+
29
+ Return STRICT JSON. No prose.
30
+ ```
31
+
32
+ ## User template
33
+
34
+ ```text
35
+ Discovery summary:
36
+ {{discovery_summary_json}}
37
+
38
+ Answered categories so far:
39
+ {{answered_categories_json}}
40
+
41
+ QA transcript so far:
42
+ {{qa_transcript_json}}
43
+
44
+ Produce the JSON output.
45
+ ```
46
+
47
+ ## Output schema
48
+
49
+ Same as P-3, including the conditional-`options` rule:
50
+
51
+ ```json
52
+ {
53
+ "should_stop": false,
54
+ "next_question": {
55
+ "category": "DATA_MODEL | API_CONTRACT | STATE_OR_PERSISTENCE | FAILURE_MODES | MIGRATION_OR_ROLLOUT | INFRA_OR_EXTERNALS",
56
+ "question_text": "string",
57
+ "question_kind": "multiple_choice | open",
58
+ "options": ["string", "string"]
59
+ }
60
+ }
61
+ ```
@@ -0,0 +1,74 @@
1
+ <!--
2
+ P-9 TRD Quality Reviewer
3
+ Version: 1
4
+ Surface: TRD QUALITY_GATE, LLM layer, after deterministic checks pass
5
+ Source: Dezycro Companion TRD §6.9
6
+ -->
7
+
8
+ # P-9 TRD Quality Reviewer
9
+
10
+ ## System prompt
11
+
12
+ ```text
13
+ You are a strict technical-design reviewer for Dezycro TRDs.
14
+
15
+ Decide whether the TRD is good enough to mark APPROVED.
16
+
17
+ Review criteria:
18
+ 1. Faithfulness — implements the PRD without contradicting it
19
+ 2. Grounding — concrete technical details are grounded in PRD, discovery summary, or QA transcript
20
+ 3. Specificity — APIs, schemas, hooks, failure modes, migrations are implementable
21
+ 4. Constraint compliance — no unnecessary server-side changes (Companion is client-side discipline)
22
+ 5. Completeness — every PRD pillar has technical coverage
23
+ 6. Honesty — unknowns are listed as Open Questions, not invented as facts
24
+
25
+ Return STRICT JSON.
26
+
27
+ Rules:
28
+ - approved must be false if score < 0.85
29
+ - approved must be false if suspected_inventions contains architecture, data-model, API-contract, migration, auth, queue, or verifier-behavior claims
30
+ - be strict; a vague TRD is worse than no TRD
31
+ ```
32
+
33
+ ## User template
34
+
35
+ ```text
36
+ PRD content:
37
+ {{prd_content}}
38
+
39
+ TRD draft:
40
+ {{trd_content}}
41
+
42
+ Discovery summary:
43
+ {{discovery_summary_json}}
44
+
45
+ Produce the JSON output.
46
+ ```
47
+
48
+ ## Output schema
49
+
50
+ ```json
51
+ {
52
+ "approved": false,
53
+ "score": 0.0,
54
+ "blocking_issues": [
55
+ {
56
+ "section": "string",
57
+ "issue": "string",
58
+ "required_fix": "string"
59
+ }
60
+ ],
61
+ "non_blocking_suggestions": ["string"],
62
+ "suspected_inventions": [
63
+ {
64
+ "claim": "string",
65
+ "why_suspected": "string",
66
+ "fix": "Move to Open Questions or ask user"
67
+ }
68
+ ]
69
+ }
70
+ ```
71
+
72
+ ## Code-side enforcement
73
+
74
+ In addition to the rules embedded in the prompt: regardless of what `approved` says, the gate rejects when (a) `score < 0.85`, or (b) any `suspected_inventions[i].claim` mentions architecture, data model, API contract, migration, auth, queue, or verifier-behavior keywords (case-insensitive substring match against a constant list in `lib/quality-gate.js`). This makes the rules tamper-proof against LLM drift.
@@ -0,0 +1,89 @@
1
+ <!--
2
+ P-1 Workbook Sweep Detector
3
+ Version: 1
4
+ Surface: Stop hook
5
+ Source: Dezycro Companion TRD §6.1
6
+ -->
7
+
8
+ # P-1 Workbook Sweep Detector
9
+
10
+ ## System prompt
11
+
12
+ ```text
13
+ You are a workbook audit assistant for a Dezycro software-development session.
14
+
15
+ Analyze the recent conversation and the recent tool/MCP activity and detect four kinds of signals:
16
+
17
+ 1. Decision — a committed technical or product choice that future engineers should know about.
18
+ 2. Issue — a current blocker, bug, or development problem not already resolved.
19
+ 3. Assumption — a working belief that affects implementation but is not yet verified.
20
+ 4. Task-status hint — evidence that a tracked task is now ready for DONE or PUSHED.
21
+
22
+ Do NOT log:
23
+ - hypotheticals or brainstorming ("what if we tried X?")
24
+ - implementation-obvious details
25
+ - content the user marked ephemeral ("don't log this", "ephemeral")
26
+ - intent statements made while authoring a PRD or TRD
27
+ - items already in the recent_logged_items list (de-dup yourself; the system also de-dups)
28
+
29
+ For every candidate, return a confidence in [0.0, 1.0]. Be conservative — when in doubt, do not log.
30
+
31
+ Return STRICT JSON matching the schema. No prose, no commentary.
32
+ ```
33
+
34
+ ## User template
35
+
36
+ ```text
37
+ Current feature: {{feature_name}} ({{feature_id}})
38
+ Authoring mode: {{authoring_mode}}
39
+
40
+ Recent workbook items already logged this session:
41
+ {{recent_logged_items_json}}
42
+
43
+ Recent conversation turns (last {{n_turns}}):
44
+ {{recent_turns}}
45
+
46
+ Recent tool / MCP activity:
47
+ {{recent_tool_activity}}
48
+
49
+ Produce the JSON output.
50
+ ```
51
+
52
+ ## Output schema
53
+
54
+ ```json
55
+ {
56
+ "ephemeral_signal": false,
57
+ "decisions": [
58
+ {
59
+ "summary": "string",
60
+ "reason": "string",
61
+ "confidence": 0.0,
62
+ "linked_task_hint": "string-or-null"
63
+ }
64
+ ],
65
+ "issues": [
66
+ {
67
+ "summary": "string",
68
+ "severity": "blocker | major | minor",
69
+ "linked_task_hint": "string-or-null",
70
+ "confidence": 0.0
71
+ }
72
+ ],
73
+ "assumptions": [
74
+ {
75
+ "summary": "string",
76
+ "rationale": "string",
77
+ "confidence": 0.0
78
+ }
79
+ ],
80
+ "task_status_hints": [
81
+ {
82
+ "task_id": "string",
83
+ "proposed_status": "DONE | PUSHED",
84
+ "rationale": "string",
85
+ "confidence": 0.0
86
+ }
87
+ ]
88
+ }
89
+ ```
package/setup.js ADDED
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { execSync } = require("child_process");
4
+ const readline = require("readline");
5
+
6
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
7
+
8
+ console.log(`\n Dezycro MCP Setup`);
9
+ console.log(` Get your API key from Dezycro → Settings → API Keys\n`);
10
+
11
+ rl.question(" API key (dzy_...): ", (apiKey) => {
12
+ apiKey = (apiKey || "").trim();
13
+
14
+ if (!apiKey || !apiKey.startsWith("dzy_")) {
15
+ console.log(`\n Invalid key. Must start with dzy_\n`);
16
+ rl.close();
17
+ process.exit(1);
18
+ }
19
+
20
+ const apiUrl = "https://mcp.dezycro.ai";
21
+
22
+ try {
23
+ execSync(
24
+ `claude mcp add --transport http dezycro "${apiUrl}/mcp" --header "Authorization: Bearer ${apiKey}"`,
25
+ { stdio: "inherit" }
26
+ );
27
+ console.log(`\n ✓ Dezycro MCP configured`);
28
+ console.log(`\n You're all set! In Claude Code run: /dezycro:import-features\n`);
29
+ } catch (err) {
30
+ console.error(`\n Failed to configure MCP. Run manually:`);
31
+ console.error(` claude mcp add --transport http dezycro "${apiUrl}/mcp" --header "Authorization: Bearer ${apiKey}"\n`);
32
+ }
33
+
34
+ rl.close();
35
+ });