@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.
- package/LICENSE +21 -0
- package/README.md +192 -0
- package/base/CLAUDE.md +148 -0
- package/base/commands/context-reset.md +72 -0
- package/base/commands/debug.md +63 -0
- package/base/commands/discover.md +49 -0
- package/base/commands/gsd-discuss.md +53 -0
- package/base/commands/gsd-execute.md +60 -0
- package/base/commands/gsd-verify.md +78 -0
- package/base/commands/kit.md +62 -0
- package/base/commands/plan.md +91 -0
- package/base/commands/ralph.md +110 -0
- package/base/commands/review.md +81 -0
- package/base/commands/risk.md +53 -0
- package/base/commands/ship.md +74 -0
- package/base/commands/spec.md +121 -0
- package/base/commands/standup.md +57 -0
- package/base/rules/architecture.md +51 -0
- package/base/rules/azure.md +90 -0
- package/base/rules/code-quality.md +65 -0
- package/base/rules/coding.md +139 -0
- package/base/rules/communication.md +69 -0
- package/base/rules/context-management.md +136 -0
- package/base/rules/execution-loop.md +84 -0
- package/base/rules/git-workflow.md +51 -0
- package/base/rules/github-actions.md +48 -0
- package/base/rules/powershell.md +72 -0
- package/base/rules/profile.md +31 -0
- package/base/rules/security.md +40 -0
- package/base/rules/terraform.md +48 -0
- package/base/rules/vault.md +134 -0
- package/base/skills/code-gc/SKILL.md +205 -0
- package/base/skills/code-simplifier/SKILL.md +132 -0
- package/base/skills/prd-writer/SKILL.md +108 -0
- package/base/skills/prd-writer/references/prd-template.md +22 -0
- package/base/skills/pre-commit-lint/SKILL.md +71 -0
- package/base/skills/scaffold-exist/SKILL.md +85 -0
- package/base/skills/scaffold-new/SKILL.md +177 -0
- package/base/skills/scaffold-new/references/claude-progress-template.json +24 -0
- package/base/skills/scaffold-new/references/gitignore-template.txt +65 -0
- package/base/skills/scaffold-new/references/repo-CLAUDE-md-template.md +87 -0
- package/base/skills/scaffold-new/references/vault-index-template.md +31 -0
- package/base/skills/scaffold-new/references/vault-learnings-template.md +21 -0
- package/base/skills/scaffold-new/references/vault-status-template.md +21 -0
- package/base/skills/scaffold-new/references/vault-tasks-template.md +20 -0
- package/base/skills/session-retro/SKILL.md +146 -0
- package/base/skills/subagent-review/SKILL.md +126 -0
- package/base/skills/vault-gc/SKILL.md +93 -0
- package/base/skills/verify-app/SKILL.md +156 -0
- package/bin/praxis.js +385 -0
- package/kits/infrastructure/KIT.md +66 -0
- package/kits/infrastructure/commands/infra-apply.md +44 -0
- package/kits/infrastructure/commands/infra-compliance.md +65 -0
- package/kits/infrastructure/commands/infra-drift.md +45 -0
- package/kits/infrastructure/commands/infra-plan.md +45 -0
- package/kits/infrastructure/install.sh +43 -0
- package/kits/infrastructure/rules/infrastructure.md +82 -0
- package/kits/infrastructure/teardown.sh +14 -0
- package/kits/web-designer/KIT.md +76 -0
- package/kits/web-designer/commands/web-audit.md +67 -0
- package/kits/web-designer/commands/web-component.md +54 -0
- package/kits/web-designer/commands/web-init.md +42 -0
- package/kits/web-designer/commands/web-tokens-sync.md +49 -0
- package/kits/web-designer/install.sh +41 -0
- package/kits/web-designer/rules/web-design.md +79 -0
- package/kits/web-designer/teardown.sh +26 -0
- package/package.json +28 -0
- package/scripts/health-check.sh +160 -0
- package/scripts/lint-harness.sh +195 -0
- package/scripts/onboard-mcp.sh +326 -0
- package/scripts/update.sh +88 -0
- package/templates/_index.md +33 -0
- package/templates/adr.md +28 -0
- package/templates/claude-progress.json +24 -0
- package/templates/plan.md +46 -0
- package/templates/project-index.md +31 -0
- package/templates/session-note.md +21 -0
- package/templates/status.md +27 -0
- 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
|
package/templates/adr.md
ADDED
|
@@ -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
|
+
|------|-----------|-------|
|