@pieerry/harness-kit 3.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 (77) hide show
  1. package/.claude/agents/product-manager.md +20 -0
  2. package/.claude/agents/staff-software-engineer.md +25 -0
  3. package/.claude/commands/product-manager/prd.md +31 -0
  4. package/.claude/commands/product-manager/prp.md +35 -0
  5. package/.claude/commands/product-manager/run.md +31 -0
  6. package/.claude/commands/sse/dev.md +47 -0
  7. package/.claude/commands/sse/plan.md +33 -0
  8. package/.claude/commands/sse/pr.md +43 -0
  9. package/.claude/commands/sse/run.md +39 -0
  10. package/.claude/commands/sse/test.md +38 -0
  11. package/.claude/hooks/status-line.sh +103 -0
  12. package/.claude/plugins/product-manager/README.md +120 -0
  13. package/.claude/plugins/product-manager/evals/prd-quality.md +88 -0
  14. package/.claude/plugins/product-manager/evals/prd-readiness.md +66 -0
  15. package/.claude/plugins/product-manager/evals/prp-context-readiness.md +51 -0
  16. package/.claude/plugins/product-manager/evals/prp-quality.md +88 -0
  17. package/.claude/plugins/product-manager/guides/examples/good-prd-example.md +121 -0
  18. package/.claude/plugins/product-manager/guides/examples/good-prp-example.md +128 -0
  19. package/.claude/plugins/product-manager/guides/pipeline.md +84 -0
  20. package/.claude/plugins/product-manager/guides/prd-guidelines.md +27 -0
  21. package/.claude/plugins/product-manager/guides/product-guidelines.md +75 -0
  22. package/.claude/plugins/product-manager/guides/prp-guidelines.md +64 -0
  23. package/.claude/plugins/product-manager/guides/templates/prd.md +89 -0
  24. package/.claude/plugins/product-manager/guides/templates/prp.md +98 -0
  25. package/.claude/plugins/product-manager/guides/writing-style.md +71 -0
  26. package/.claude/plugins/product-manager/hooks/post-eval-prd.sh +77 -0
  27. package/.claude/plugins/product-manager/hooks/post-eval-prp.sh +70 -0
  28. package/.claude/plugins/product-manager/hooks/post-write-prd.sh +56 -0
  29. package/.claude/plugins/product-manager/hooks/post-write-prp.sh +61 -0
  30. package/.claude/plugins/product-manager/hooks/pre-prp-check.sh +48 -0
  31. package/.claude/plugins/product-manager/outputs/.markers/.gitkeep +0 -0
  32. package/.claude/plugins/product-manager/scripts/confluence-publish.py +205 -0
  33. package/.claude/plugins/product-manager/scripts/link-validator.py +87 -0
  34. package/.claude/plugins/product-manager/scripts/sensor-runner.py +140 -0
  35. package/.claude/plugins/product-manager/scripts/token-phase.py +208 -0
  36. package/.claude/plugins/product-manager/sensors/prd-acceptance-criteria.md +39 -0
  37. package/.claude/plugins/product-manager/sensors/prd-structure.md +39 -0
  38. package/.claude/plugins/product-manager/sensors/prp-context-quality.md +42 -0
  39. package/.claude/plugins/product-manager/sensors/prp-links.md +24 -0
  40. package/.claude/plugins/product-manager/sensors/prp-structure.md +52 -0
  41. package/.claude/plugins/product-manager/skills/prd/SKILL.md +33 -0
  42. package/.claude/plugins/product-manager/skills/prp/SKILL.md +37 -0
  43. package/.claude/plugins/staff-software-engineer/README.md +90 -0
  44. package/.claude/plugins/staff-software-engineer/evals/plan-quality.md +48 -0
  45. package/.claude/plugins/staff-software-engineer/guides/coding-style.md +51 -0
  46. package/.claude/plugins/staff-software-engineer/guides/commit-style.md +44 -0
  47. package/.claude/plugins/staff-software-engineer/guides/conventions-override.md +79 -0
  48. package/.claude/plugins/staff-software-engineer/guides/pipeline.md +69 -0
  49. package/.claude/plugins/staff-software-engineer/hooks/post-eval-plan.sh +43 -0
  50. package/.claude/plugins/staff-software-engineer/hooks/post-write-plan.sh +49 -0
  51. package/.claude/plugins/staff-software-engineer/outputs/.markers/.gitkeep +0 -0
  52. package/.claude/plugins/staff-software-engineer/sensors/code-conventions.md +37 -0
  53. package/.claude/plugins/staff-software-engineer/sensors/plan-structure.md +37 -0
  54. package/.claude/plugins/staff-software-engineer/sensors/test-coverage.md +28 -0
  55. package/.claude/plugins/staff-software-engineer/skills/backend/SKILL.md +80 -0
  56. package/.claude/plugins/staff-software-engineer/skills/devops/SKILL.md +58 -0
  57. package/.claude/plugins/staff-software-engineer/skills/mobile/SKILL.md +52 -0
  58. package/.claude/plugins/staff-software-engineer/skills/web/SKILL.md +64 -0
  59. package/.claude/settings.local.json +61 -0
  60. package/CLAUDE.md +90 -0
  61. package/LICENSE +21 -0
  62. package/README.md +192 -0
  63. package/VERSION +1 -0
  64. package/bin/hk.js +141 -0
  65. package/context-library/README.md +38 -0
  66. package/context-library/business-info-template.md +39 -0
  67. package/context-library/decisions/README.md +3 -0
  68. package/context-library/example-prds/README.md +3 -0
  69. package/context-library/meetings/.gitkeep +0 -0
  70. package/context-library/metrics/.gitkeep +0 -0
  71. package/context-library/personal-context-template.md +31 -0
  72. package/context-library/research/.gitkeep +0 -0
  73. package/context-library/squads/README.md +32 -0
  74. package/context-library/strategy/README.md +3 -0
  75. package/package.json +43 -0
  76. package/setup/install.sh +154 -0
  77. package/setup/update.sh +17 -0
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/env bash
2
+ # harness-kit installer. Copies plugins, status-line hook, and
3
+ # settings.json into a target repo. Reads VERSION at the repo root and records
4
+ # it in the target.
5
+ #
6
+ # Usage:
7
+ # bash /path/to/harness-kit/setup/install.sh [target-dir]
8
+
9
+ set -e
10
+
11
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
+ SOURCE_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
13
+ TARGET="${1:-${TARGET:-$(pwd)}}"
14
+
15
+ VERSION="$(cat "$SOURCE_ROOT/VERSION" 2>/dev/null || echo "0.0.0")"
16
+
17
+ if [ ! -d "$SOURCE_ROOT/.claude/plugins/product-manager" ]; then
18
+ echo "missing plugins at $SOURCE_ROOT/.claude/plugins/"
19
+ echo "clone the repo first, then re-run: git clone https://github.com/space-metrics-ai/harness-kit ~/.harness-kit"
20
+ exit 1
21
+ fi
22
+
23
+ command -v git >/dev/null 2>&1 || { echo "git not found"; exit 1; }
24
+ command -v python3 >/dev/null 2>&1 || { echo "python3 not found"; exit 1; }
25
+
26
+ OLD_VERSION="$(cat "$TARGET/.claude/.hk-version" 2>/dev/null || echo "")"
27
+
28
+ if [ -n "$OLD_VERSION" ] && [ "$OLD_VERSION" != "$VERSION" ]; then
29
+ echo "harness-kit v$OLD_VERSION → v$VERSION at $TARGET"
30
+ elif [ -n "$OLD_VERSION" ]; then
31
+ echo "harness-kit v$VERSION at $TARGET (reinstall)"
32
+ else
33
+ echo "harness-kit v$VERSION installing at $TARGET"
34
+ fi
35
+
36
+ # Copy plugin support code (hooks, scripts, guides, sensors, evals, skills, outputs)
37
+ mkdir -p "$TARGET/.claude/plugins"
38
+ for plugin in product-manager staff-software-engineer; do
39
+ rm -rf "$TARGET/.claude/plugins/$plugin"
40
+ cp -R "$SOURCE_ROOT/.claude/plugins/$plugin" "$TARGET/.claude/plugins/$plugin"
41
+ done
42
+
43
+ # Re-resolve symlinks in SSE scripts
44
+ for f in "$TARGET/.claude/plugins/staff-software-engineer/scripts/"*; do
45
+ if [ -L "$f" ]; then
46
+ name="$(basename "$f")"
47
+ rm "$f"
48
+ ln -sf "../../product-manager/scripts/$name" "$f"
49
+ fi
50
+ done
51
+
52
+ # Copy slash commands and Task-invokable agents
53
+ mkdir -p "$TARGET/.claude/commands" "$TARGET/.claude/agents"
54
+ for ns in product-manager sse; do
55
+ rm -rf "$TARGET/.claude/commands/$ns"
56
+ cp -R "$SOURCE_ROOT/.claude/commands/$ns" "$TARGET/.claude/commands/$ns"
57
+ done
58
+ for agent in product-manager staff-software-engineer; do
59
+ cp "$SOURCE_ROOT/.claude/agents/$agent.md" "$TARGET/.claude/agents/$agent.md"
60
+ done
61
+
62
+ # Clean up legacy plugin layout from older installs
63
+ for plugin in product-manager staff-software-engineer; do
64
+ rm -rf "$TARGET/.claude/plugins/$plugin/commands" \
65
+ "$TARGET/.claude/plugins/$plugin/agents" \
66
+ "$TARGET/.claude/plugins/$plugin/.claude-plugin"
67
+ done
68
+
69
+ # Copy status-line hook
70
+ mkdir -p "$TARGET/.claude/hooks"
71
+ cp "$SOURCE_ROOT/.claude/hooks/status-line.sh" "$TARGET/.claude/hooks/status-line.sh"
72
+ chmod +x "$TARGET/.claude/hooks/status-line.sh"
73
+
74
+ # Settings.json
75
+ cat > "$TARGET/.claude/settings.json" <<'EOF'
76
+ {
77
+ "permissions": {
78
+ "allow": [
79
+ "Bash(git:*)",
80
+ "Bash(./gradlew:*)",
81
+ "Bash(./mvnw:*)",
82
+ "Bash(npm:*)",
83
+ "Bash(gh:*)",
84
+ "Bash(jq:*)",
85
+ "Read(outputs/**)",
86
+ "Write(outputs/**)"
87
+ ],
88
+ "deny": [
89
+ "Bash(rm -rf:*)",
90
+ "Bash(git push --force:*)",
91
+ "Bash(git push -f:*)",
92
+ "Bash(git reset --hard:*)"
93
+ ]
94
+ },
95
+ "hooks": {
96
+ "PreToolUse": [
97
+ {
98
+ "matcher": "Write",
99
+ "hooks": [
100
+ { "type": "command", "command": "[ -x .claude/plugins/product-manager/hooks/pre-prp-check.sh ] && bash .claude/plugins/product-manager/hooks/pre-prp-check.sh; exit 0" }
101
+ ]
102
+ }
103
+ ],
104
+ "PostToolUse": [
105
+ {
106
+ "matcher": "Write",
107
+ "hooks": [
108
+ { "type": "command", "command": "[ -x .claude/plugins/product-manager/hooks/post-write-prd.sh ] && bash .claude/plugins/product-manager/hooks/post-write-prd.sh; exit 0" },
109
+ { "type": "command", "command": "[ -x .claude/plugins/product-manager/hooks/post-write-prp.sh ] && bash .claude/plugins/product-manager/hooks/post-write-prp.sh; exit 0" },
110
+ { "type": "command", "command": "[ -x .claude/plugins/staff-software-engineer/hooks/post-write-plan.sh ] && bash .claude/plugins/staff-software-engineer/hooks/post-write-plan.sh; exit 0" }
111
+ ]
112
+ },
113
+ {
114
+ "matcher": "Edit",
115
+ "hooks": [
116
+ { "type": "command", "command": "[ -x .claude/plugins/product-manager/hooks/post-eval-prd.sh ] && bash .claude/plugins/product-manager/hooks/post-eval-prd.sh; exit 0" },
117
+ { "type": "command", "command": "[ -x .claude/plugins/product-manager/hooks/post-eval-prp.sh ] && bash .claude/plugins/product-manager/hooks/post-eval-prp.sh; exit 0" },
118
+ { "type": "command", "command": "[ -x .claude/plugins/staff-software-engineer/hooks/post-eval-plan.sh ] && bash .claude/plugins/staff-software-engineer/hooks/post-eval-plan.sh; exit 0" }
119
+ ]
120
+ }
121
+ ]
122
+ },
123
+ "statusLine": {
124
+ "type": "command",
125
+ "command": "[ -x .claude/hooks/status-line.sh ] && bash .claude/hooks/status-line.sh || printf 'harness-kit not installed'"
126
+ }
127
+ }
128
+ EOF
129
+
130
+ # Scaffold conventions folder (idempotent)
131
+ mkdir -p "$TARGET/.claude/conventions"
132
+ if [ ! -f "$TARGET/.claude/conventions/README.md" ]; then
133
+ cat > "$TARGET/.claude/conventions/README.md" <<'EOF'
134
+ # Project Conventions
135
+
136
+ Override staff-software-engineer plugin defaults for this repo. Create files as needed:
137
+
138
+ - backend.md
139
+ - web.md
140
+ - mobile.md
141
+ - devops.md
142
+
143
+ When a file exists here, plugin reads it on top of defaults. Rules in this folder win.
144
+
145
+ See `.claude/plugins/staff-software-engineer/guides/conventions-override.md` for the full reference.
146
+ EOF
147
+ fi
148
+
149
+ # Record installed version
150
+ echo "$VERSION" > "$TARGET/.claude/.hk-version"
151
+
152
+ echo "done. restart Claude Code to load."
153
+ echo " /product-manager:prd | :prp | :run"
154
+ echo " /sse:plan | :dev | :test | :pr | :run"
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env bash
2
+ # harness-kit updater. Pulls latest source, then re-runs the installer.
3
+ #
4
+ # Usage:
5
+ # bash /path/to/harness-kit/setup/update.sh [target-dir]
6
+
7
+ set -e
8
+
9
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
+ SOURCE_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
11
+
12
+ if [ -d "$SOURCE_ROOT/.git" ]; then
13
+ echo "fetching latest source..."
14
+ git -C "$SOURCE_ROOT" pull --ff-only
15
+ fi
16
+
17
+ exec bash "$SCRIPT_DIR/install.sh" "$@"