@hegemonart/get-design-done 1.19.6 → 1.20.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 (93) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +60 -0
  4. package/README.md +12 -0
  5. package/agents/design-reflector.md +13 -0
  6. package/connections/connections.md +3 -0
  7. package/connections/figma.md +2 -0
  8. package/connections/gdd-state.md +186 -0
  9. package/hooks/budget-enforcer.ts +716 -0
  10. package/hooks/context-exhaustion.ts +251 -0
  11. package/hooks/gdd-read-injection-scanner.ts +172 -0
  12. package/hooks/hooks.json +3 -3
  13. package/package.json +19 -6
  14. package/reference/config-schema.md +2 -2
  15. package/reference/error-recovery.md +58 -0
  16. package/reference/registry.json +7 -0
  17. package/reference/schemas/budget.schema.json +42 -0
  18. package/reference/schemas/events.schema.json +55 -0
  19. package/reference/schemas/generated.d.ts +419 -0
  20. package/reference/schemas/iteration-budget.schema.json +36 -0
  21. package/reference/schemas/mcp-gdd-state-tools.schema.json +89 -0
  22. package/reference/schemas/rate-limits.schema.json +31 -0
  23. package/scripts/aggregate-agent-metrics.ts +282 -0
  24. package/scripts/codegen-schema-types.ts +149 -0
  25. package/scripts/lib/error-classifier.cjs +232 -0
  26. package/scripts/lib/error-classifier.d.cts +44 -0
  27. package/scripts/lib/event-stream/emitter.ts +88 -0
  28. package/scripts/lib/event-stream/index.ts +154 -0
  29. package/scripts/lib/event-stream/types.ts +127 -0
  30. package/scripts/lib/event-stream/writer.ts +154 -0
  31. package/scripts/lib/gdd-errors/classification.ts +124 -0
  32. package/scripts/lib/gdd-errors/index.ts +218 -0
  33. package/scripts/lib/gdd-state/gates.ts +216 -0
  34. package/scripts/lib/gdd-state/index.ts +167 -0
  35. package/scripts/lib/gdd-state/lockfile.ts +232 -0
  36. package/scripts/lib/gdd-state/mutator.ts +574 -0
  37. package/scripts/lib/gdd-state/parser.ts +523 -0
  38. package/scripts/lib/gdd-state/types.ts +179 -0
  39. package/scripts/lib/iteration-budget.cjs +205 -0
  40. package/scripts/lib/iteration-budget.d.cts +32 -0
  41. package/scripts/lib/jittered-backoff.cjs +112 -0
  42. package/scripts/lib/jittered-backoff.d.cts +38 -0
  43. package/scripts/lib/lockfile.cjs +177 -0
  44. package/scripts/lib/lockfile.d.cts +21 -0
  45. package/scripts/lib/prompt-sanitizer/index.ts +435 -0
  46. package/scripts/lib/prompt-sanitizer/patterns.ts +173 -0
  47. package/scripts/lib/rate-guard.cjs +365 -0
  48. package/scripts/lib/rate-guard.d.cts +38 -0
  49. package/scripts/mcp-servers/gdd-state/schemas/add_blocker.schema.json +67 -0
  50. package/scripts/mcp-servers/gdd-state/schemas/add_decision.schema.json +68 -0
  51. package/scripts/mcp-servers/gdd-state/schemas/add_must_have.schema.json +68 -0
  52. package/scripts/mcp-servers/gdd-state/schemas/checkpoint.schema.json +51 -0
  53. package/scripts/mcp-servers/gdd-state/schemas/frontmatter_update.schema.json +62 -0
  54. package/scripts/mcp-servers/gdd-state/schemas/get.schema.json +51 -0
  55. package/scripts/mcp-servers/gdd-state/schemas/probe_connections.schema.json +75 -0
  56. package/scripts/mcp-servers/gdd-state/schemas/resolve_blocker.schema.json +66 -0
  57. package/scripts/mcp-servers/gdd-state/schemas/set_status.schema.json +47 -0
  58. package/scripts/mcp-servers/gdd-state/schemas/transition_stage.schema.json +70 -0
  59. package/scripts/mcp-servers/gdd-state/schemas/update_progress.schema.json +58 -0
  60. package/scripts/mcp-servers/gdd-state/server.ts +288 -0
  61. package/scripts/mcp-servers/gdd-state/tools/add_blocker.ts +72 -0
  62. package/scripts/mcp-servers/gdd-state/tools/add_decision.ts +89 -0
  63. package/scripts/mcp-servers/gdd-state/tools/add_must_have.ts +113 -0
  64. package/scripts/mcp-servers/gdd-state/tools/checkpoint.ts +60 -0
  65. package/scripts/mcp-servers/gdd-state/tools/frontmatter_update.ts +91 -0
  66. package/scripts/mcp-servers/gdd-state/tools/get.ts +51 -0
  67. package/scripts/mcp-servers/gdd-state/tools/index.ts +51 -0
  68. package/scripts/mcp-servers/gdd-state/tools/probe_connections.ts +73 -0
  69. package/scripts/mcp-servers/gdd-state/tools/resolve_blocker.ts +84 -0
  70. package/scripts/mcp-servers/gdd-state/tools/set_status.ts +54 -0
  71. package/scripts/mcp-servers/gdd-state/tools/shared.ts +194 -0
  72. package/scripts/mcp-servers/gdd-state/tools/transition_stage.ts +80 -0
  73. package/scripts/mcp-servers/gdd-state/tools/update_progress.ts +81 -0
  74. package/scripts/validate-frontmatter.ts +114 -0
  75. package/scripts/validate-schemas.ts +401 -0
  76. package/skills/brief/SKILL.md +15 -6
  77. package/skills/design/SKILL.md +31 -13
  78. package/skills/explore/SKILL.md +41 -17
  79. package/skills/health/SKILL.md +15 -4
  80. package/skills/optimize/SKILL.md +3 -3
  81. package/skills/pause/SKILL.md +16 -10
  82. package/skills/plan/SKILL.md +33 -17
  83. package/skills/progress/SKILL.md +15 -11
  84. package/skills/resume/SKILL.md +19 -10
  85. package/skills/settings/SKILL.md +11 -3
  86. package/skills/todo/SKILL.md +12 -3
  87. package/skills/verify/SKILL.md +65 -29
  88. package/hooks/budget-enforcer.js +0 -329
  89. package/hooks/context-exhaustion.js +0 -127
  90. package/hooks/gdd-read-injection-scanner.js +0 -39
  91. package/scripts/aggregate-agent-metrics.js +0 -173
  92. package/scripts/validate-frontmatter.cjs +0 -68
  93. package/scripts/validate-schemas.cjs +0 -242
@@ -0,0 +1,62 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/hegemonart/get-design-done/main/scripts/mcp-servers/gdd-state/schemas/frontmatter_update.schema.json",
4
+ "title": "GddStateFrontmatterUpdate",
5
+ "description": "MCP tool gdd_state__frontmatter_update — patch one or more frontmatter fields. Rejects pipeline_state_version and stage (must use transition_stage). Emits state.mutation.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["input", "output"],
9
+ "properties": {
10
+ "input": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "required": ["patch"],
14
+ "properties": {
15
+ "patch": {
16
+ "type": "object",
17
+ "minProperties": 1,
18
+ "additionalProperties": {
19
+ "oneOf": [
20
+ { "type": "string" },
21
+ { "type": "number" },
22
+ { "type": "boolean" }
23
+ ]
24
+ },
25
+ "description": "Key/value pairs to merge into frontmatter. Disallowed keys: pipeline_state_version, stage."
26
+ }
27
+ }
28
+ },
29
+ "output": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "required": ["success"],
33
+ "properties": {
34
+ "success": { "type": "boolean" },
35
+ "data": {
36
+ "type": "object",
37
+ "additionalProperties": true,
38
+ "properties": {
39
+ "frontmatter": {
40
+ "type": "object",
41
+ "description": "The full frontmatter map after patch."
42
+ },
43
+ "keys": {
44
+ "type": "array",
45
+ "items": { "type": "string" }
46
+ }
47
+ }
48
+ },
49
+ "error": {
50
+ "type": "object",
51
+ "additionalProperties": true,
52
+ "required": ["code", "message", "kind"],
53
+ "properties": {
54
+ "code": { "type": "string" },
55
+ "message": { "type": "string" },
56
+ "kind": { "type": "string", "enum": ["validation", "state_conflict", "operation_failed", "unknown"] }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/hegemonart/get-design-done/main/scripts/mcp-servers/gdd-state/schemas/get.schema.json",
4
+ "title": "GddStateGet",
5
+ "description": "MCP tool gdd_state__get — read current STATE.md (parsed). Read-only; no event emitted.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["input", "output"],
9
+ "properties": {
10
+ "input": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "properties": {
14
+ "fields": {
15
+ "type": "array",
16
+ "items": { "type": "string", "minLength": 1 },
17
+ "description": "Optional projection. When present, limit data.state to these top-level keys. Unknown keys are ignored (no error)."
18
+ }
19
+ }
20
+ },
21
+ "output": {
22
+ "type": "object",
23
+ "additionalProperties": false,
24
+ "required": ["success"],
25
+ "properties": {
26
+ "success": { "type": "boolean" },
27
+ "data": {
28
+ "type": "object",
29
+ "additionalProperties": true,
30
+ "properties": {
31
+ "state": {
32
+ "type": "object",
33
+ "description": "The parsed STATE.md (see scripts/lib/gdd-state/types.ts ParsedState). When fields[] was passed, only the requested keys are present."
34
+ },
35
+ "path": { "type": "string" }
36
+ }
37
+ },
38
+ "error": {
39
+ "type": "object",
40
+ "additionalProperties": true,
41
+ "required": ["code", "message", "kind"],
42
+ "properties": {
43
+ "code": { "type": "string" },
44
+ "message": { "type": "string" },
45
+ "kind": { "type": "string", "enum": ["validation", "state_conflict", "operation_failed", "unknown"] }
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,75 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/hegemonart/get-design-done/main/scripts/mcp-servers/gdd-state/schemas/probe_connections.schema.json",
4
+ "title": "GddStateProbeConnections",
5
+ "description": "MCP tool gdd_state__probe_connections — update <connections> map from probe results. Overwrites keys present in the input; does NOT delete keys not in the input. Emits state.mutation.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["input", "output"],
9
+ "properties": {
10
+ "input": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "required": ["probe_results"],
14
+ "properties": {
15
+ "probe_results": {
16
+ "type": "array",
17
+ "minItems": 1,
18
+ "items": {
19
+ "type": "object",
20
+ "additionalProperties": false,
21
+ "required": ["name", "status"],
22
+ "properties": {
23
+ "name": {
24
+ "type": "string",
25
+ "minLength": 1,
26
+ "description": "Connection name (e.g. \"figma\", \"refero\")."
27
+ },
28
+ "status": {
29
+ "type": "string",
30
+ "enum": ["available", "unavailable", "not_configured"]
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+ },
37
+ "output": {
38
+ "type": "object",
39
+ "additionalProperties": false,
40
+ "required": ["success"],
41
+ "properties": {
42
+ "success": { "type": "boolean" },
43
+ "data": {
44
+ "type": "object",
45
+ "additionalProperties": true,
46
+ "properties": {
47
+ "updated": {
48
+ "type": "array",
49
+ "items": { "type": "string" },
50
+ "description": "Names of connection entries that were written."
51
+ },
52
+ "connections": {
53
+ "type": "object",
54
+ "description": "Full current <connections> map after update.",
55
+ "additionalProperties": {
56
+ "type": "string",
57
+ "enum": ["available", "unavailable", "not_configured"]
58
+ }
59
+ }
60
+ }
61
+ },
62
+ "error": {
63
+ "type": "object",
64
+ "additionalProperties": true,
65
+ "required": ["code", "message", "kind"],
66
+ "properties": {
67
+ "code": { "type": "string" },
68
+ "message": { "type": "string" },
69
+ "kind": { "type": "string", "enum": ["validation", "state_conflict", "operation_failed", "unknown"] }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/hegemonart/get-design-done/main/scripts/mcp-servers/gdd-state/schemas/resolve_blocker.schema.json",
4
+ "title": "GddStateResolveBlocker",
5
+ "description": "MCP tool gdd_state__resolve_blocker — remove one <blockers> entry by 0-based index or exact text match. Emits state.mutation when a row is removed; returns operation_failed error when no row matches.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["input", "output"],
9
+ "properties": {
10
+ "input": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "oneOf": [
14
+ { "required": ["index"] },
15
+ { "required": ["text"] }
16
+ ],
17
+ "properties": {
18
+ "index": {
19
+ "type": "integer",
20
+ "minimum": 0,
21
+ "description": "0-based index into the <blockers> list. Mutually exclusive with text."
22
+ },
23
+ "text": {
24
+ "type": "string",
25
+ "minLength": 1,
26
+ "description": "Exact text match against blocker.text. First matching row is removed. Mutually exclusive with index."
27
+ }
28
+ }
29
+ },
30
+ "output": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "required": ["success"],
34
+ "properties": {
35
+ "success": { "type": "boolean" },
36
+ "data": {
37
+ "type": "object",
38
+ "additionalProperties": true,
39
+ "properties": {
40
+ "removed": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": ["stage", "date", "text"],
44
+ "properties": {
45
+ "stage": { "type": "string" },
46
+ "date": { "type": "string" },
47
+ "text": { "type": "string" }
48
+ }
49
+ },
50
+ "count": { "type": "integer", "minimum": 0 }
51
+ }
52
+ },
53
+ "error": {
54
+ "type": "object",
55
+ "additionalProperties": true,
56
+ "required": ["code", "message", "kind"],
57
+ "properties": {
58
+ "code": { "type": "string" },
59
+ "message": { "type": "string" },
60
+ "kind": { "type": "string", "enum": ["validation", "state_conflict", "operation_failed", "unknown"] }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/hegemonart/get-design-done/main/scripts/mcp-servers/gdd-state/schemas/set_status.schema.json",
4
+ "title": "GddStateSetStatus",
5
+ "description": "MCP tool gdd_state__set_status — update <position>.status. Emits state.mutation.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["input", "output"],
9
+ "properties": {
10
+ "input": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "required": ["status"],
14
+ "properties": {
15
+ "status": {
16
+ "type": "string",
17
+ "enum": ["initialized", "in_progress", "completed", "blocked"]
18
+ }
19
+ }
20
+ },
21
+ "output": {
22
+ "type": "object",
23
+ "additionalProperties": false,
24
+ "required": ["success"],
25
+ "properties": {
26
+ "success": { "type": "boolean" },
27
+ "data": {
28
+ "type": "object",
29
+ "additionalProperties": true,
30
+ "properties": {
31
+ "status": { "type": "string" }
32
+ }
33
+ },
34
+ "error": {
35
+ "type": "object",
36
+ "additionalProperties": true,
37
+ "required": ["code", "message", "kind"],
38
+ "properties": {
39
+ "code": { "type": "string" },
40
+ "message": { "type": "string" },
41
+ "kind": { "type": "string", "enum": ["validation", "state_conflict", "operation_failed", "unknown"] }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/hegemonart/get-design-done/main/scripts/mcp-servers/gdd-state/schemas/transition_stage.schema.json",
4
+ "title": "GddStateTransitionStage",
5
+ "description": "MCP tool gdd_state__transition_stage — run gate and advance stage on pass. Emits state.transition (pass=true) or state.transition (pass=false with blockers).",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["input", "output"],
9
+ "properties": {
10
+ "input": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "required": ["to"],
14
+ "properties": {
15
+ "to": {
16
+ "type": "string",
17
+ "enum": ["brief", "explore", "plan", "design", "verify"],
18
+ "description": "Target stage to advance to. transition() resolves the gate from the current <position>.stage."
19
+ }
20
+ }
21
+ },
22
+ "output": {
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": ["success"],
26
+ "properties": {
27
+ "success": { "type": "boolean" },
28
+ "data": {
29
+ "type": "object",
30
+ "additionalProperties": true,
31
+ "properties": {
32
+ "from": {
33
+ "type": "string",
34
+ "description": "Stage we advanced from."
35
+ },
36
+ "to": {
37
+ "type": "string",
38
+ "enum": ["brief", "explore", "plan", "design", "verify"]
39
+ },
40
+ "state": {
41
+ "type": "object",
42
+ "description": "The updated parsed state after advance."
43
+ }
44
+ }
45
+ },
46
+ "error": {
47
+ "type": "object",
48
+ "additionalProperties": true,
49
+ "required": ["code", "message", "kind"],
50
+ "properties": {
51
+ "code": { "type": "string" },
52
+ "message": { "type": "string" },
53
+ "kind": { "type": "string", "enum": ["validation", "state_conflict", "operation_failed", "unknown"] },
54
+ "context": {
55
+ "type": "object",
56
+ "additionalProperties": true,
57
+ "properties": {
58
+ "blockers": {
59
+ "type": "array",
60
+ "items": { "type": "string" }
61
+ },
62
+ "toStage": { "type": "string" }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/hegemonart/get-design-done/main/scripts/mcp-servers/gdd-state/schemas/update_progress.schema.json",
4
+ "title": "GddStateUpdateProgress",
5
+ "description": "MCP tool gdd_state__update_progress — update <position> task_progress and/or status. Emits state.mutation.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["input", "output"],
9
+ "properties": {
10
+ "input": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "anyOf": [
14
+ { "required": ["task_progress"] },
15
+ { "required": ["status"] }
16
+ ],
17
+ "properties": {
18
+ "task_progress": {
19
+ "type": "string",
20
+ "pattern": "^[0-9]+/[0-9]+$",
21
+ "description": "e.g. \"3/7\"."
22
+ },
23
+ "status": {
24
+ "type": "string",
25
+ "enum": ["initialized", "in_progress", "completed", "blocked"]
26
+ }
27
+ }
28
+ },
29
+ "output": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "required": ["success"],
33
+ "properties": {
34
+ "success": { "type": "boolean" },
35
+ "data": {
36
+ "type": "object",
37
+ "additionalProperties": true,
38
+ "properties": {
39
+ "position": {
40
+ "type": "object",
41
+ "description": "The updated <position> block."
42
+ }
43
+ }
44
+ },
45
+ "error": {
46
+ "type": "object",
47
+ "additionalProperties": true,
48
+ "required": ["code", "message", "kind"],
49
+ "properties": {
50
+ "code": { "type": "string" },
51
+ "message": { "type": "string" },
52
+ "kind": { "type": "string", "enum": ["validation", "state_conflict", "operation_failed", "unknown"] }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }