@esoteric-logic/praxis-harness 1.1.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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +192 -0
  3. package/base/CLAUDE.md +148 -0
  4. package/base/commands/context-reset.md +72 -0
  5. package/base/commands/debug.md +63 -0
  6. package/base/commands/discover.md +49 -0
  7. package/base/commands/gsd-discuss.md +53 -0
  8. package/base/commands/gsd-execute.md +60 -0
  9. package/base/commands/gsd-verify.md +78 -0
  10. package/base/commands/kit.md +62 -0
  11. package/base/commands/plan.md +91 -0
  12. package/base/commands/ralph.md +110 -0
  13. package/base/commands/review.md +81 -0
  14. package/base/commands/risk.md +53 -0
  15. package/base/commands/ship.md +74 -0
  16. package/base/commands/spec.md +121 -0
  17. package/base/commands/standup.md +57 -0
  18. package/base/rules/architecture.md +51 -0
  19. package/base/rules/azure.md +90 -0
  20. package/base/rules/code-quality.md +65 -0
  21. package/base/rules/coding.md +139 -0
  22. package/base/rules/communication.md +69 -0
  23. package/base/rules/context-management.md +136 -0
  24. package/base/rules/execution-loop.md +84 -0
  25. package/base/rules/git-workflow.md +51 -0
  26. package/base/rules/github-actions.md +48 -0
  27. package/base/rules/powershell.md +72 -0
  28. package/base/rules/profile.md +31 -0
  29. package/base/rules/security.md +40 -0
  30. package/base/rules/terraform.md +48 -0
  31. package/base/rules/vault.md +134 -0
  32. package/base/skills/code-gc/SKILL.md +205 -0
  33. package/base/skills/code-simplifier/SKILL.md +132 -0
  34. package/base/skills/prd-writer/SKILL.md +108 -0
  35. package/base/skills/prd-writer/references/prd-template.md +22 -0
  36. package/base/skills/pre-commit-lint/SKILL.md +71 -0
  37. package/base/skills/scaffold-exist/SKILL.md +85 -0
  38. package/base/skills/scaffold-new/SKILL.md +177 -0
  39. package/base/skills/scaffold-new/references/claude-progress-template.json +24 -0
  40. package/base/skills/scaffold-new/references/gitignore-template.txt +65 -0
  41. package/base/skills/scaffold-new/references/repo-CLAUDE-md-template.md +87 -0
  42. package/base/skills/scaffold-new/references/vault-index-template.md +31 -0
  43. package/base/skills/scaffold-new/references/vault-learnings-template.md +21 -0
  44. package/base/skills/scaffold-new/references/vault-status-template.md +21 -0
  45. package/base/skills/scaffold-new/references/vault-tasks-template.md +20 -0
  46. package/base/skills/session-retro/SKILL.md +146 -0
  47. package/base/skills/subagent-review/SKILL.md +126 -0
  48. package/base/skills/vault-gc/SKILL.md +93 -0
  49. package/base/skills/verify-app/SKILL.md +156 -0
  50. package/bin/praxis.js +385 -0
  51. package/kits/infrastructure/KIT.md +66 -0
  52. package/kits/infrastructure/commands/infra-apply.md +44 -0
  53. package/kits/infrastructure/commands/infra-compliance.md +65 -0
  54. package/kits/infrastructure/commands/infra-drift.md +45 -0
  55. package/kits/infrastructure/commands/infra-plan.md +45 -0
  56. package/kits/infrastructure/install.sh +43 -0
  57. package/kits/infrastructure/rules/infrastructure.md +82 -0
  58. package/kits/infrastructure/teardown.sh +14 -0
  59. package/kits/web-designer/KIT.md +76 -0
  60. package/kits/web-designer/commands/web-audit.md +67 -0
  61. package/kits/web-designer/commands/web-component.md +54 -0
  62. package/kits/web-designer/commands/web-init.md +42 -0
  63. package/kits/web-designer/commands/web-tokens-sync.md +49 -0
  64. package/kits/web-designer/install.sh +41 -0
  65. package/kits/web-designer/rules/web-design.md +79 -0
  66. package/kits/web-designer/teardown.sh +26 -0
  67. package/package.json +28 -0
  68. package/scripts/health-check.sh +160 -0
  69. package/scripts/lint-harness.sh +195 -0
  70. package/scripts/onboard-mcp.sh +326 -0
  71. package/scripts/update.sh +88 -0
  72. package/templates/_index.md +33 -0
  73. package/templates/adr.md +28 -0
  74. package/templates/claude-progress.json +24 -0
  75. package/templates/plan.md +46 -0
  76. package/templates/project-index.md +31 -0
  77. package/templates/session-note.md +21 -0
  78. package/templates/status.md +27 -0
  79. package/templates/tasks.md +27 -0
@@ -0,0 +1,88 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ # ════════════════════════════════════════════════════════════════
5
+ # Praxis — Update
6
+ # Pull latest, re-run install, update kit dependencies
7
+ # ════════════════════════════════════════════════════════════════
8
+
9
+ CONFIG_FILE="$HOME/.claude/praxis.config.json"
10
+
11
+ if [[ ! -f "$CONFIG_FILE" ]]; then
12
+ echo "No Praxis installation found. Run install.sh first."
13
+ exit 1
14
+ fi
15
+
16
+ REPO_PATH=$(jq -r '.repo_path' "$CONFIG_FILE")
17
+
18
+ if [[ ! -d "$REPO_PATH" ]]; then
19
+ echo "Praxis repo not found at $REPO_PATH. Check praxis.config.json."
20
+ exit 1
21
+ fi
22
+
23
+ # ─── Check for uncommitted changes ───
24
+ cd "$REPO_PATH"
25
+ if [[ -n "$(git status --porcelain)" ]]; then
26
+ echo "⚠ Uncommitted changes in $REPO_PATH"
27
+ echo " Stash or commit before updating."
28
+ read -p " Continue anyway? [y/N] " CONTINUE
29
+ if [[ ! "${CONTINUE:-N}" =~ ^[Yy]$ ]]; then
30
+ echo "Aborted."
31
+ exit 0
32
+ fi
33
+ fi
34
+
35
+ # ─── Pull latest ───
36
+ echo "Pulling latest from origin..."
37
+ git pull origin main
38
+
39
+ # ─── Re-run install to pick up new symlinks ───
40
+ echo ""
41
+ echo "Re-running install.sh..."
42
+ ./install.sh
43
+
44
+ # ─── Update kit dependencies ───
45
+ echo ""
46
+ echo "Checking kit dependencies..."
47
+ for kit_dir in "$REPO_PATH"/kits/*/; do
48
+ [[ -d "$kit_dir" ]] || continue
49
+ kit_name=$(basename "$kit_dir")
50
+
51
+ if [[ -f "$kit_dir/install.sh" ]]; then
52
+ read -p "Update $kit_name dependencies? [Y/n] " UPDATE_KIT
53
+ if [[ "${UPDATE_KIT:-Y}" =~ ^[Yy]$ ]]; then
54
+ echo " Updating $kit_name..."
55
+ bash "$kit_dir/install.sh" || echo " ⚠ $kit_name update had errors"
56
+ fi
57
+ fi
58
+ done
59
+
60
+ # ─── Verify key tools (conditional on backend) ───
61
+ echo ""
62
+ echo "Verifying tools..."
63
+ VAULT_BACKEND=""
64
+ if [[ -f "$CONFIG_FILE" ]]; then
65
+ VAULT_BACKEND=$(jq -r '.vault_backend // "obsidian"' "$CONFIG_FILE" 2>/dev/null)
66
+ fi
67
+ if [[ "$VAULT_BACKEND" == "obsidian" ]]; then
68
+ command -v obsidian &>/dev/null && echo " ✓ Obsidian CLI available" || echo " ✗ Obsidian CLI not found"
69
+ else
70
+ command -v rg &>/dev/null && echo " ✓ ripgrep available" || echo " ✗ ripgrep not found"
71
+ fi
72
+ command -v claude &>/dev/null && echo " ✓ claude available" || echo " ✗ claude not found"
73
+ command -v node &>/dev/null && echo " ✓ node available" || echo " ✗ node not found"
74
+
75
+ if [[ -f "$REPO_PATH/scripts/health-check.sh" ]]; then
76
+ echo ""
77
+ echo "Running health check..."
78
+ bash "$REPO_PATH/scripts/health-check.sh" || echo " ⚠ Health check had failures"
79
+ fi
80
+
81
+ if [[ -f "$REPO_PATH/scripts/lint-harness.sh" ]]; then
82
+ echo ""
83
+ echo "Running content lint..."
84
+ bash "$REPO_PATH/scripts/lint-harness.sh" "$REPO_PATH" || echo " ⚠ Lint had failures"
85
+ fi
86
+
87
+ echo ""
88
+ echo "✓ Praxis updated"
@@ -0,0 +1,33 @@
1
+ ---
2
+ tags: [index, project-slug]
3
+ status: active
4
+ repo: https://github.com/org/repo
5
+ local_path: # REQUIRED: absolute path to repo root
6
+ vault_path: # REQUIRED: absolute path to vault project directory
7
+ tech_stack: [stack-item-1, stack-item-2]
8
+ started: YYYY-MM-DD
9
+ ---
10
+
11
+ # {Project Name}
12
+
13
+ > This is the vault copy. See also: `project-index.md` (repo reference).
14
+
15
+ ## Overview
16
+ One-line description of what this project does.
17
+
18
+ ## Links
19
+ - **Repo**: [GitHub](https://github.com/org/repo)
20
+ - **Local**: ~/path/to/repo
21
+ - **Vault**: ~/path/to/vault/project
22
+
23
+ ## Active Goals
24
+ - [ ] Goal 1
25
+ - [ ] Goal 2
26
+
27
+ ## Key Decisions
28
+ <!-- Link decision records here as they are created -->
29
+
30
+ ## Execution State
31
+ - **Status file**: [[project-slug/status]]
32
+ - **Machine state**: `vault_path/claude-progress.json`
33
+ - **Active plan**: see `current_plan:` in status.md
@@ -0,0 +1,28 @@
1
+ ---
2
+ tags: [adr, project-slug]
3
+ date: YYYY-MM-DD
4
+ status: proposed
5
+ source: agent
6
+ ---
7
+
8
+ # ADR: Title
9
+
10
+ ## Decision
11
+ One sentence. What was decided.
12
+
13
+ ## Context
14
+ Why this decision was needed. What constraints applied.
15
+
16
+ ## Options Considered
17
+
18
+ | Option | Pros | Cons |
19
+ |--------|------|------|
20
+ | Option A | | |
21
+ | Option B | | |
22
+
23
+ ## Consequences
24
+ What this makes easier, harder, or impossible going forward.
25
+
26
+ ## References
27
+ - Related specs: [[link]]
28
+ - Risk register items: R-XX
@@ -0,0 +1,24 @@
1
+ {
2
+ "project": "project-slug",
3
+ "display_name": "Project Name",
4
+ "created": "YYYY-MM-DD",
5
+ "type": "Work",
6
+ "identity": "identity-profile",
7
+ "repo_root": "~/path/to/repo",
8
+ "vault_path": "~/path/to/vault/project",
9
+ "stack": ["item-1", "item-2"],
10
+ "milestones": [],
11
+ "features": [],
12
+ "ralph_state": {
13
+ "mode": "idle",
14
+ "prd_path": null,
15
+ "current_story": null,
16
+ "completed_stories": [],
17
+ "blocked_stories": [],
18
+ "learnings": [],
19
+ "last_iteration": null,
20
+ "session_count": 0
21
+ },
22
+ "last_session": null,
23
+ "sessions": []
24
+ }
@@ -0,0 +1,46 @@
1
+ ---
2
+ tags: [plan, project-slug]
3
+ date: YYYY-MM-DD
4
+ status: active
5
+ target: YYYY-MM-DD
6
+ execution_type: execute | tdd | research
7
+ source: agent
8
+ ---
9
+
10
+ # Plan: Title
11
+
12
+ ## Objective
13
+ One sentence.
14
+
15
+ ## Context
16
+ Why this work is happening now.
17
+
18
+ ## Milestones
19
+ - [ ] Milestone 1 — date
20
+ - [ ] Milestone 2 — date | depends_on: Milestone 1
21
+ - [ ] Milestone 3 — date | depends_on: Milestone 2 | checkpoint: decision
22
+ - [ ] Milestone 4 — date | checkpoint: human-verify
23
+
24
+ ## Steps
25
+
26
+ ### Milestone 1
27
+ 1. Step
28
+ 2. Step
29
+
30
+ ### Milestone 2
31
+ 1. Step
32
+ 2. Step
33
+
34
+ ## Done When
35
+ - [ ] Specific verifiable check
36
+
37
+ ## Boundaries
38
+ <!-- Required. Files/systems that MUST NOT change during this plan. -->
39
+ <!-- Override requires explicit "OVERRIDE: {reason}" from user. -->
40
+ - DO NOT CHANGE: {file or system list}
41
+
42
+ ## Blockers
43
+ <!-- Known blockers at plan creation time -->
44
+
45
+ ## Session Log
46
+ <!-- Updated by session-retro -->
@@ -0,0 +1,31 @@
1
+ ---
2
+ tags: [index, project-slug]
3
+ status: active
4
+ repo: https://github.com/org/repo
5
+ local_path: ~/path/to/repo
6
+ vault_path: ~/path/to/vault/project
7
+ tech_stack: [stack-item-1, stack-item-2]
8
+ started: YYYY-MM-DD
9
+ ---
10
+
11
+ # Project Name
12
+
13
+ ## Overview
14
+ One-line description of what this project does.
15
+
16
+ ## Links
17
+ - **Repo**: [GitHub](https://github.com/org/repo)
18
+ - **Local**: ~/path/to/repo
19
+ - **Vault**: ~/path/to/vault/project
20
+
21
+ ## Active Goals
22
+ - [ ] Goal 1
23
+ - [ ] Goal 2
24
+
25
+ ## Key Decisions
26
+ <!-- Link decision records here as they are created -->
27
+
28
+ ## Execution State
29
+ - **Status file**: [[project-slug/status]]
30
+ - **Machine state**: `vault_path/claude-progress.json`
31
+ - **Active plan**: see `current_plan:` in status.md
@@ -0,0 +1,21 @@
1
+ ---
2
+ tags: [session, project-slug]
3
+ date: YYYY-MM-DD
4
+ source: agent
5
+ ---
6
+
7
+ # Session Note — YYYY-MM-DD
8
+
9
+ ## Summary
10
+ - Bullet 1
11
+ - Bullet 2
12
+ - Bullet 3
13
+
14
+ ## Decisions Made
15
+ <!-- Key decisions and rationale -->
16
+
17
+ ## Learnings
18
+ <!-- [LEARN:tag] entries from this session -->
19
+
20
+ ## Next Session
21
+ <!-- What to pick up next -->
@@ -0,0 +1,27 @@
1
+ ---
2
+ tags: [status, project-slug]
3
+ date: YYYY-MM-DD
4
+ source: agent
5
+ ---
6
+
7
+ # Status — {Project Name}
8
+
9
+ current_plan:
10
+ last_updated: YYYY-MM-DD
11
+ last_session:
12
+ loop_position: IDLE
13
+
14
+ ## What
15
+ <!-- Facts only. What exists, what was done, what failed. -->
16
+
17
+ ## So What
18
+ <!-- Why it matters. Risk, dependency, compliance gap, or opportunity. -->
19
+
20
+ ## Now What
21
+ <!-- Ordered actions informed by the above. -->
22
+
23
+ ## Blockers
24
+ <!-- Active blockers with owner if known -->
25
+
26
+ ## Test Debt
27
+ <!-- Modules or features lacking test coverage -->
@@ -0,0 +1,27 @@
1
+ ---
2
+ tags: [tasks, project-slug]
3
+ date: YYYY-MM-DD
4
+ source: agent
5
+ ---
6
+
7
+ # Tasks — {Project Name}
8
+
9
+ ## Active
10
+
11
+ | Task | Owner | Due | Status |
12
+ |------|-------|-----|--------|
13
+
14
+ ## Blocked
15
+
16
+ | Task | Blocker | Owner |
17
+ |------|---------|-------|
18
+
19
+ ## Backlog
20
+
21
+ | Task | Priority | Notes |
22
+ |------|----------|-------|
23
+
24
+ ## Completed
25
+
26
+ | Task | Completed | Notes |
27
+ |------|-----------|-------|