create-claudify 1.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.
- package/README.md +76 -0
- package/dist/index.js +558 -0
- package/package.json +47 -0
- package/templates/.claude/agent-memory/auditor.md +16 -0
- package/templates/.claude/agents/auditor.md +58 -0
- package/templates/.claude/agents/reviewer.md +54 -0
- package/templates/.claude/command-index.md +26 -0
- package/templates/.claude/commands/audit.md +24 -0
- package/templates/.claude/commands/clear.md +51 -0
- package/templates/.claude/commands/start.md +32 -0
- package/templates/.claude/commands/sync.md +27 -0
- package/templates/.claude/commands/wrap-up.md +29 -0
- package/templates/.claude/hooks/audit-logger.sh +31 -0
- package/templates/.claude/hooks/context-monitor.sh +30 -0
- package/templates/.claude/hooks/quality-gate.sh +69 -0
- package/templates/.claude/knowledge-base.md +28 -0
- package/templates/.claude/knowledge-nominations.md +12 -0
- package/templates/.claude/logs/.gitkeep +0 -0
- package/templates/.claude/memory.md +21 -0
- package/templates/.claude/settings.json +68 -0
- package/templates/.claude/skills/content/SKILL.md +34 -0
- package/templates/.claude/skills/data-export/SKILL.md +34 -0
- package/templates/.claude/skills/deploy/SKILL.md +40 -0
- package/templates/.claude/skills/monitor/SKILL.md +44 -0
- package/templates/.claude/skills/research/SKILL.md +42 -0
- package/templates/.mcp.json +14 -0
- package/templates/CLAUDE.local.md +18 -0
- package/templates/CLAUDE.md +91 -0
- package/templates/SETUP.md +203 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Auditor Agent
|
|
2
|
+
|
|
3
|
+
Quality gate. Reviews all work for errors, inconsistencies, and SOP violations.
|
|
4
|
+
Updates its own memory with patterns. Promotes valid nominations to knowledge-base.
|
|
5
|
+
|
|
6
|
+
## Role
|
|
7
|
+
|
|
8
|
+
You are a quality auditor. Your job is to find problems before they reach users.
|
|
9
|
+
You are skeptical by default — assume errors exist until proven otherwise.
|
|
10
|
+
|
|
11
|
+
## Tools Available
|
|
12
|
+
|
|
13
|
+
Read, Glob, Grep, Edit, Write, Bash (date only)
|
|
14
|
+
|
|
15
|
+
## Procedure
|
|
16
|
+
|
|
17
|
+
When invoked, follow this sequence:
|
|
18
|
+
|
|
19
|
+
1. **Read context**:
|
|
20
|
+
- `.claude/knowledge-base.md` (mandatory constraints)
|
|
21
|
+
- `.claude/agent-memory/auditor.md` (your persistent memory)
|
|
22
|
+
- The specific files or scope you've been asked to audit
|
|
23
|
+
|
|
24
|
+
2. **Check against rules**:
|
|
25
|
+
- Does the work comply with knowledge-base hard rules?
|
|
26
|
+
- Are there factual errors, inconsistencies, or missing pieces?
|
|
27
|
+
- Is the output complete (no TODOs, placeholders, or stubs)?
|
|
28
|
+
- Does the quality match the project's standards?
|
|
29
|
+
|
|
30
|
+
3. **Score each item**:
|
|
31
|
+
- **PASS** — meets all standards
|
|
32
|
+
- **FAIL** — has errors that must be fixed (describe precisely what's wrong)
|
|
33
|
+
- **NOMINATION** — you discovered a new rule or pattern worth recording
|
|
34
|
+
|
|
35
|
+
4. **Report findings** in this format:
|
|
36
|
+
```
|
|
37
|
+
## Audit Report — [scope]
|
|
38
|
+
|
|
39
|
+
**Overall:** PASS | FAIL
|
|
40
|
+
**Items checked:** [count]
|
|
41
|
+
|
|
42
|
+
### Findings
|
|
43
|
+
- [PASS|FAIL] [item]: [description]
|
|
44
|
+
|
|
45
|
+
### Nominations
|
|
46
|
+
- [learning] | Evidence: [what you observed]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
5. **Update your memory**: Append patterns to `.claude/agent-memory/auditor.md`
|
|
50
|
+
|
|
51
|
+
## Knowledge Promotion
|
|
52
|
+
|
|
53
|
+
You are the ONLY agent that writes to `.claude/knowledge-base.md`.
|
|
54
|
+
When reviewing nominations from `.claude/knowledge-nominations.md`:
|
|
55
|
+
- Verify the learning is accurate (check evidence)
|
|
56
|
+
- Assign provenance: User override > Empirical > Agent inference
|
|
57
|
+
- Write to the appropriate section with `[Source: type MMDDYY]`
|
|
58
|
+
- Remove promoted items from nominations file
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Reviewer Agent
|
|
2
|
+
|
|
3
|
+
Read-only quality assurance. Cross-checks work, validates consistency.
|
|
4
|
+
Cannot modify files — only reports findings.
|
|
5
|
+
|
|
6
|
+
## Role
|
|
7
|
+
|
|
8
|
+
You are a reviewer. Your job is to verify correctness without changing anything.
|
|
9
|
+
Read everything, trust nothing, report what you find.
|
|
10
|
+
|
|
11
|
+
## Tools Available
|
|
12
|
+
|
|
13
|
+
Read, Glob, Grep (read-only tools only)
|
|
14
|
+
|
|
15
|
+
## Procedure
|
|
16
|
+
|
|
17
|
+
When invoked, follow this sequence:
|
|
18
|
+
|
|
19
|
+
1. **Read context**:
|
|
20
|
+
- `.claude/knowledge-base.md` (mandatory constraints)
|
|
21
|
+
- The specific files or scope you've been asked to review
|
|
22
|
+
|
|
23
|
+
2. **Cross-reference checks**:
|
|
24
|
+
- Do referenced files actually exist?
|
|
25
|
+
- Do cross-file references match (imports, exports, API contracts)?
|
|
26
|
+
- Are there naming inconsistencies across files?
|
|
27
|
+
- Do configuration values match between related files?
|
|
28
|
+
- Are there dead references or orphaned files?
|
|
29
|
+
|
|
30
|
+
3. **Consistency checks**:
|
|
31
|
+
- Is the code style consistent within each file?
|
|
32
|
+
- Do similar patterns use the same approach?
|
|
33
|
+
- Are error messages helpful and consistent?
|
|
34
|
+
- Do comments match what the code actually does?
|
|
35
|
+
|
|
36
|
+
4. **Report findings**:
|
|
37
|
+
```
|
|
38
|
+
## Review Report — [scope]
|
|
39
|
+
|
|
40
|
+
**Files checked:** [count]
|
|
41
|
+
**Issues found:** [count]
|
|
42
|
+
|
|
43
|
+
### Issues
|
|
44
|
+
- [severity: LOW|MEDIUM|HIGH] [file:line]: [description]
|
|
45
|
+
|
|
46
|
+
### Observations
|
|
47
|
+
- [non-blocking notes or suggestions]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Constraints
|
|
51
|
+
|
|
52
|
+
- NEVER modify any files
|
|
53
|
+
- NEVER run commands that change state
|
|
54
|
+
- Report only — the main session or auditor decides what to fix
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Command Index
|
|
2
|
+
|
|
3
|
+
All available commands. Every agent reads this to know what's available.
|
|
4
|
+
|
|
5
|
+
| Command | Trigger | What it does | Tools needed |
|
|
6
|
+
|---|---|---|---|
|
|
7
|
+
| `/start` | Session start | Load context, create daily note | Read, Write |
|
|
8
|
+
| `/sync` | Mid-session | Refresh memory, update daily note | Read, Edit |
|
|
9
|
+
| `/clear` | Context heavy (~30+ calls) | Flush context, write handoff, auto-resume | Read, Write, Edit |
|
|
10
|
+
| `/wrap-up` | Session end | Persist state, archive completed work | Read, Edit |
|
|
11
|
+
| `/audit` | After deliverables | Review work quality via auditor agent | Read, Task |
|
|
12
|
+
|
|
13
|
+
## How Commands Work
|
|
14
|
+
|
|
15
|
+
- Commands are markdown files in `.claude/commands/`
|
|
16
|
+
- Any agent can invoke a command by reading its file and following the steps
|
|
17
|
+
- If an agent lacks the required tools, it outputs `RECOMMEND: /command — [reason]`
|
|
18
|
+
- Commands can chain: `/wrap-up` might trigger `/sync` first
|
|
19
|
+
|
|
20
|
+
## Adding Custom Commands
|
|
21
|
+
|
|
22
|
+
Create a new `.md` file in `.claude/commands/` with:
|
|
23
|
+
1. A `# /name` heading
|
|
24
|
+
2. `## Steps` section with numbered procedures
|
|
25
|
+
3. `## Trigger Conditions` section describing when to invoke
|
|
26
|
+
4. Add an entry to this index
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# /audit — Review Recent Work Quality
|
|
2
|
+
|
|
3
|
+
Spawn the auditor agent to review recent outputs for errors, inconsistencies, and improvement opportunities.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. **Determine scope**: Check what was done since the last audit (read daily note `## Done` section).
|
|
8
|
+
|
|
9
|
+
2. **Spawn auditor agent** with the Task tool:
|
|
10
|
+
- Agent type: Use the auditor agent definition from `.claude/agents/auditor.md`
|
|
11
|
+
- Scope: Files modified since last audit
|
|
12
|
+
- Checks: Consistency, completeness, knowledge-base compliance
|
|
13
|
+
|
|
14
|
+
3. **Process results**:
|
|
15
|
+
- **PASS**: Log and continue
|
|
16
|
+
- **FAIL**: Fix the issue, then re-audit the fix
|
|
17
|
+
- **NOMINATION**: Append to `.claude/knowledge-nominations.md`
|
|
18
|
+
|
|
19
|
+
4. **Report**: Summary of findings with action items.
|
|
20
|
+
|
|
21
|
+
## Trigger Conditions
|
|
22
|
+
- After completing a significant deliverable
|
|
23
|
+
- Before sharing work with others
|
|
24
|
+
- User explicitly requests quality review
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# /clear — Safely Flush Context and Resume
|
|
2
|
+
|
|
3
|
+
Distill session state, write a handoff, then seamlessly resume work.
|
|
4
|
+
The user should not notice this happening — work just continues.
|
|
5
|
+
|
|
6
|
+
## Steps
|
|
7
|
+
|
|
8
|
+
### Step 1: Read state (parallel)
|
|
9
|
+
- `.claude/memory.md`
|
|
10
|
+
- Today's daily note: `Daily Notes/MMDDYY.md`
|
|
11
|
+
|
|
12
|
+
### Step 2: Distill session
|
|
13
|
+
|
|
14
|
+
Extract from in-context memory using **restorable compression** — preserve retrieval paths:
|
|
15
|
+
|
|
16
|
+
1. **Task** — one sentence
|
|
17
|
+
2. **Done/remaining** — 2-4 bullets, conclusions not process
|
|
18
|
+
3. **Decisions** — one line each, WHAT+WHY not HOW
|
|
19
|
+
4. **Files touched** — full paths of every file read or modified (retrieval anchors)
|
|
20
|
+
5. **Active references** — URLs, endpoints, resources consulted (pointers only)
|
|
21
|
+
6. **Next action** — precise instruction including which file(s) to read first
|
|
22
|
+
|
|
23
|
+
### Step 3: Write handoff to daily note
|
|
24
|
+
|
|
25
|
+
Append:
|
|
26
|
+
```markdown
|
|
27
|
+
## Session Handoff — HH:MM
|
|
28
|
+
|
|
29
|
+
**Task:** [one sentence]
|
|
30
|
+
**Done:** [bullets]
|
|
31
|
+
**Remaining:** [bullets]
|
|
32
|
+
**Decisions:** [bullets]
|
|
33
|
+
**Files:** [full paths]
|
|
34
|
+
**Refs:** [URLs, resources — pointers only]
|
|
35
|
+
**Next:** [precise action + which files to read first]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Step 4: Update memory.md (only if changed)
|
|
39
|
+
|
|
40
|
+
### Step 5: Auto-resume (restorable decompression)
|
|
41
|
+
|
|
42
|
+
1. Re-read `.claude/memory.md` and `.claude/knowledge-base.md`
|
|
43
|
+
2. Re-read the daily note handoff
|
|
44
|
+
3. Re-read files specified in **Next** and critical files from **Files** list
|
|
45
|
+
4. **Immediately execute the Next action** — pick up where you left off
|
|
46
|
+
|
|
47
|
+
## Trigger Conditions
|
|
48
|
+
- After ~30 tool calls
|
|
49
|
+
- When output quality degrades
|
|
50
|
+
- Between unrelated tasks
|
|
51
|
+
- When "compacting conversation" appears
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# /start — Begin a Work Session
|
|
2
|
+
|
|
3
|
+
Load context, create a daily note, and prepare to work.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. **Read state** (parallel):
|
|
8
|
+
- `.claude/memory.md`
|
|
9
|
+
- `.claude/knowledge-base.md`
|
|
10
|
+
- Today's daily note if it exists: `Daily Notes/MMDDYY.md`
|
|
11
|
+
|
|
12
|
+
2. **Create daily note** (if none exists):
|
|
13
|
+
```markdown
|
|
14
|
+
# {{DAY_NAME}} {{DATE}}
|
|
15
|
+
|
|
16
|
+
## Plan
|
|
17
|
+
- [Tasks for today]
|
|
18
|
+
|
|
19
|
+
## Notes
|
|
20
|
+
- [Captured during work]
|
|
21
|
+
|
|
22
|
+
## Done
|
|
23
|
+
- [Completed items]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
3. **Check for handoffs**: If a previous session handoff exists in the daily note, read it and resume from the **Next** action.
|
|
27
|
+
|
|
28
|
+
4. **Report ready**: Brief summary of current state and what's next.
|
|
29
|
+
|
|
30
|
+
## Trigger Conditions
|
|
31
|
+
- Start of any new work session
|
|
32
|
+
- User says "let's start", "begin", "good morning"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# /sync — Mid-Session Context Refresh
|
|
2
|
+
|
|
3
|
+
Re-read state, update memory, and ensure nothing has drifted.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. **Read current state** (parallel):
|
|
8
|
+
- `.claude/memory.md`
|
|
9
|
+
- Today's daily note: `Daily Notes/MMDDYY.md`
|
|
10
|
+
- `.claude/knowledge-base.md` (scan for new entries)
|
|
11
|
+
|
|
12
|
+
2. **Update memory.md**:
|
|
13
|
+
- Add any new active work items to `## Now`
|
|
14
|
+
- Move completed items out of `## Now`
|
|
15
|
+
- Add new decisions to `## Recent Decisions`
|
|
16
|
+
- Prune anything stale (>7 days old with no activity)
|
|
17
|
+
|
|
18
|
+
3. **Update daily note**:
|
|
19
|
+
- Add completed work to `## Done`
|
|
20
|
+
- Update `## Notes` with any captured observations
|
|
21
|
+
|
|
22
|
+
4. **Check context health**: If tool call counter is high, recommend `/clear`.
|
|
23
|
+
|
|
24
|
+
## Trigger Conditions
|
|
25
|
+
- Mid-session when switching between tasks
|
|
26
|
+
- After completing a significant piece of work
|
|
27
|
+
- When you feel context might be stale
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# /wrap-up — End a Work Session
|
|
2
|
+
|
|
3
|
+
Close out the session cleanly. Persist everything important.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. **Read state** (parallel):
|
|
8
|
+
- `.claude/memory.md`
|
|
9
|
+
- Today's daily note
|
|
10
|
+
|
|
11
|
+
2. **Update daily note**:
|
|
12
|
+
- Ensure `## Done` reflects all completed work
|
|
13
|
+
- Add any unfinished items to `## Notes` with status
|
|
14
|
+
|
|
15
|
+
3. **Update memory.md**:
|
|
16
|
+
- Move completed items out of `## Now`
|
|
17
|
+
- Archive decisions older than 14 days
|
|
18
|
+
- Prune `## Open Threads` — remove anything resolved
|
|
19
|
+
- Clear `## Done` section if it's a Friday
|
|
20
|
+
|
|
21
|
+
4. **Check for knowledge nominations**:
|
|
22
|
+
- If anything was learned this session, append to `.claude/knowledge-nominations.md`
|
|
23
|
+
- Format: `- [MMDDYY] [learning] | Evidence: [source]`
|
|
24
|
+
|
|
25
|
+
5. **Report**: Brief summary of what was accomplished and what carries forward.
|
|
26
|
+
|
|
27
|
+
## Trigger Conditions
|
|
28
|
+
- End of work session
|
|
29
|
+
- User says "done for today", "wrapping up", "closing out"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Audit Logger Hook — records every tool call for traceability
|
|
3
|
+
# Triggered: PostToolUse on all tools
|
|
4
|
+
# Purpose: Create an audit trail of what Claude did, when, and to what files
|
|
5
|
+
|
|
6
|
+
TOOL_NAME="$1"
|
|
7
|
+
TOOL_INPUT="$2"
|
|
8
|
+
|
|
9
|
+
LOG_DIR=".claude/logs"
|
|
10
|
+
LOG_FILE="$LOG_DIR/audit-$(date +%m%d%y).log"
|
|
11
|
+
|
|
12
|
+
mkdir -p "$LOG_DIR"
|
|
13
|
+
|
|
14
|
+
# Extract file path if present
|
|
15
|
+
FILE_PATH=$(echo "$TOOL_INPUT" | grep -oP '"file_path"\s*:\s*"([^"]*)"' | head -1 | sed 's/.*"file_path"\s*:\s*"//;s/"//')
|
|
16
|
+
|
|
17
|
+
# Extract command if Bash
|
|
18
|
+
COMMAND=$(echo "$TOOL_INPUT" | grep -oP '"command"\s*:\s*"([^"]*)"' | head -1 | sed 's/.*"command"\s*:\s*"//;s/"$//' | head -c 200)
|
|
19
|
+
|
|
20
|
+
TIMESTAMP=$(date +"%H:%M:%S")
|
|
21
|
+
|
|
22
|
+
# Log format: TIME | TOOL | TARGET
|
|
23
|
+
if [ -n "$FILE_PATH" ]; then
|
|
24
|
+
echo "$TIMESTAMP | $TOOL_NAME | $FILE_PATH" >> "$LOG_FILE"
|
|
25
|
+
elif [ -n "$COMMAND" ]; then
|
|
26
|
+
echo "$TIMESTAMP | Bash | $COMMAND" >> "$LOG_FILE"
|
|
27
|
+
else
|
|
28
|
+
echo "$TIMESTAMP | $TOOL_NAME" >> "$LOG_FILE"
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
exit 0
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Context Monitor Hook — tracks tool calls and warns about context health
|
|
3
|
+
# Triggered: Stop (after every Claude response)
|
|
4
|
+
# Purpose: Count tool calls per session and surface warnings before quality degrades
|
|
5
|
+
|
|
6
|
+
LOG_DIR=".claude/logs"
|
|
7
|
+
COUNTER_FILE="$LOG_DIR/.tool-call-count"
|
|
8
|
+
SESSION_FILE="$LOG_DIR/.current-session-id"
|
|
9
|
+
|
|
10
|
+
mkdir -p "$LOG_DIR"
|
|
11
|
+
|
|
12
|
+
# Initialize counter if missing
|
|
13
|
+
if [ ! -f "$COUNTER_FILE" ]; then
|
|
14
|
+
echo "0" > "$COUNTER_FILE"
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
# Increment counter
|
|
18
|
+
COUNT=$(cat "$COUNTER_FILE")
|
|
19
|
+
COUNT=$((COUNT + 1))
|
|
20
|
+
echo "$COUNT" > "$COUNTER_FILE"
|
|
21
|
+
|
|
22
|
+
# Context health warnings (advisory — Claude reads these in tool output)
|
|
23
|
+
if [ "$COUNT" -ge 50 ]; then
|
|
24
|
+
echo "CONTEXT WARNING: $COUNT tool calls this session. Quality is likely degraded."
|
|
25
|
+
echo "RECOMMEND: Run /clear to flush context and resume fresh."
|
|
26
|
+
elif [ "$COUNT" -ge 30 ]; then
|
|
27
|
+
echo "CONTEXT ADVISORY: $COUNT tool calls this session. Consider running /clear soon."
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
exit 0
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Quality Gate Hook — blocks writes of incomplete content to critical files
|
|
3
|
+
# Triggered: PreToolUse on Write|Edit
|
|
4
|
+
# Purpose: Catch placeholders, TODOs, and incomplete content before it hits important files
|
|
5
|
+
|
|
6
|
+
TOOL_INPUT="$1"
|
|
7
|
+
|
|
8
|
+
# Extract the file path from tool input
|
|
9
|
+
FILE_PATH=$(echo "$TOOL_INPUT" | grep -oP '"file_path"\s*:\s*"([^"]*)"' | head -1 | sed 's/.*"file_path"\s*:\s*"//;s/"//')
|
|
10
|
+
|
|
11
|
+
if [ -z "$FILE_PATH" ]; then
|
|
12
|
+
exit 0 # Can't determine file — allow
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
BASENAME=$(basename "$FILE_PATH")
|
|
16
|
+
DIRPATH=$(dirname "$FILE_PATH")
|
|
17
|
+
|
|
18
|
+
# Extract content being written
|
|
19
|
+
CONTENT=$(echo "$TOOL_INPUT" | grep -oP '"content"\s*:\s*"([^"]*)"' | head -1 | sed 's/.*"content"\s*:\s*"//;s/"$//')
|
|
20
|
+
NEW_STRING=$(echo "$TOOL_INPUT" | grep -oP '"new_string"\s*:\s*"([^"]*)"' | head -1 | sed 's/.*"new_string"\s*:\s*"//;s/"$//')
|
|
21
|
+
TEXT_TO_CHECK="${CONTENT}${NEW_STRING}"
|
|
22
|
+
|
|
23
|
+
# Placeholder patterns to block
|
|
24
|
+
PLACEHOLDER_PATTERN='(TBD|TODO|PLACEHOLDER|FIXME|XXX|\{\{[A-Z_]+\}\})'
|
|
25
|
+
|
|
26
|
+
# --- Critical file gates ---
|
|
27
|
+
|
|
28
|
+
# knowledge-base.md: Every entry needs [Source:] provenance, max 200 lines
|
|
29
|
+
if [ "$BASENAME" = "knowledge-base.md" ]; then
|
|
30
|
+
if echo "$TEXT_TO_CHECK" | grep -qiP "$PLACEHOLDER_PATTERN"; then
|
|
31
|
+
echo "BLOCK: knowledge-base.md cannot contain placeholders (TBD/TODO/PLACEHOLDER)"
|
|
32
|
+
echo "Every entry must be a confirmed fact with [Source:] provenance."
|
|
33
|
+
exit 2
|
|
34
|
+
fi
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
# memory.md: Max 100 lines (Write only)
|
|
38
|
+
if [ "$BASENAME" = "memory.md" ] && echo "$TOOL_INPUT" | grep -q '"tool_name".*Write'; then
|
|
39
|
+
if [ -n "$CONTENT" ]; then
|
|
40
|
+
LINE_COUNT=$(echo "$CONTENT" | wc -l)
|
|
41
|
+
if [ "$LINE_COUNT" -gt 100 ]; then
|
|
42
|
+
echo "BLOCK: memory.md exceeds 100-line limit (got $LINE_COUNT lines)."
|
|
43
|
+
echo "Prune stale items before writing."
|
|
44
|
+
exit 2
|
|
45
|
+
fi
|
|
46
|
+
fi
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# settings.json: Must be valid JSON
|
|
50
|
+
if [ "$BASENAME" = "settings.json" ] && echo "$DIRPATH" | grep -q "\.claude"; then
|
|
51
|
+
if [ -n "$CONTENT" ]; then
|
|
52
|
+
if ! echo "$CONTENT" | python3 -c "import sys,json; json.load(sys.stdin)" 2>/dev/null; then
|
|
53
|
+
echo "BLOCK: settings.json must be valid JSON. Broken JSON breaks all hooks."
|
|
54
|
+
exit 2
|
|
55
|
+
fi
|
|
56
|
+
fi
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Agent definitions: No TBD/TODO — instructions must be definitive
|
|
60
|
+
if echo "$DIRPATH" | grep -q "\.claude/agents"; then
|
|
61
|
+
if echo "$TEXT_TO_CHECK" | grep -qiP "$PLACEHOLDER_PATTERN"; then
|
|
62
|
+
echo "BLOCK: Agent definitions cannot contain placeholders."
|
|
63
|
+
echo "Instructions must be definitive — agents execute what they read."
|
|
64
|
+
exit 2
|
|
65
|
+
fi
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# All checks passed
|
|
69
|
+
exit 0
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Knowledge Base
|
|
2
|
+
|
|
3
|
+
System-wide institutional memory. Every agent and session reads this at startup.
|
|
4
|
+
Only the auditor writes here after reviewing and confirming learnings.
|
|
5
|
+
|
|
6
|
+
Keep under 200 lines. Aggressively curate — only facts that prevent future errors.
|
|
7
|
+
|
|
8
|
+
**Provenance hierarchy** (when facts conflict, higher rank wins):
|
|
9
|
+
1. **User override** — You explicitly corrected an agent (highest trust)
|
|
10
|
+
2. **Empirical verification** — Confirmed through testing or data
|
|
11
|
+
3. **Agent inference** — Concluded during analysis (lowest trust)
|
|
12
|
+
|
|
13
|
+
Every entry includes its source. Format: `[Source: type MMDDYY]`
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Hard Rules Learned
|
|
18
|
+
|
|
19
|
+
- [Rules discovered through experience go here. Example:]
|
|
20
|
+
- [MMDDYY] Never run `git push --force` to main without explicit confirmation. [Source: User override MMDDYY]
|
|
21
|
+
|
|
22
|
+
## Project-Specific Knowledge
|
|
23
|
+
|
|
24
|
+
- [Facts about your codebase, APIs, or deployment that Claude can't infer from code]
|
|
25
|
+
|
|
26
|
+
## External Service Notes
|
|
27
|
+
|
|
28
|
+
- [API quirks, rate limits, authentication gotchas]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Knowledge Nominations
|
|
2
|
+
|
|
3
|
+
Candidate learnings awaiting auditor review. Any agent can append here.
|
|
4
|
+
The auditor reviews nominations each cycle and promotes valid ones to knowledge-base.
|
|
5
|
+
|
|
6
|
+
Format: `- [MMDDYY] [source]: [learning] | Evidence: [what was observed]`
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Pending
|
|
11
|
+
|
|
12
|
+
- [Nominations appear here as they're discovered]
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Memory
|
|
2
|
+
|
|
3
|
+
Living session state. Read at the start of every session. Updated during /sync and /wrap-up.
|
|
4
|
+
Keep under 100 lines — prune aggressively.
|
|
5
|
+
|
|
6
|
+
## Now
|
|
7
|
+
|
|
8
|
+
- [Your current active work goes here]
|
|
9
|
+
|
|
10
|
+
## Open Threads
|
|
11
|
+
|
|
12
|
+
- [Unresolved items that need attention]
|
|
13
|
+
- [Blocked tasks with what's blocking them]
|
|
14
|
+
|
|
15
|
+
## Parked
|
|
16
|
+
|
|
17
|
+
- [Items intentionally deferred — not forgotten, just not now]
|
|
18
|
+
|
|
19
|
+
## Recent Decisions
|
|
20
|
+
|
|
21
|
+
- [MMDDYY] [Decision made and why — one line each]
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
|
3
|
+
"permissions": {
|
|
4
|
+
"allow": [
|
|
5
|
+
"Read",
|
|
6
|
+
"Glob",
|
|
7
|
+
"Grep",
|
|
8
|
+
"WebSearch",
|
|
9
|
+
"WebFetch",
|
|
10
|
+
"Bash(git status)",
|
|
11
|
+
"Bash(git diff*)",
|
|
12
|
+
"Bash(git log*)",
|
|
13
|
+
"Bash(git branch*)",
|
|
14
|
+
"Bash(npm test*)",
|
|
15
|
+
"Bash(npm run lint*)",
|
|
16
|
+
"Bash(npm run build*)",
|
|
17
|
+
"Bash(npx tsc*)",
|
|
18
|
+
"Bash(date*)",
|
|
19
|
+
"Bash(ls *)",
|
|
20
|
+
"Bash(cat package.json)",
|
|
21
|
+
"Bash(wc *)"
|
|
22
|
+
],
|
|
23
|
+
"deny": [
|
|
24
|
+
"Bash(rm -rf *)",
|
|
25
|
+
"Bash(git push --force*)",
|
|
26
|
+
"Bash(git reset --hard*)",
|
|
27
|
+
"Bash(git checkout .)",
|
|
28
|
+
"Bash(git clean -f*)",
|
|
29
|
+
"Bash(curl * | bash)",
|
|
30
|
+
"Bash(curl * | sh)"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"hooks": {
|
|
34
|
+
"PreToolUse": [
|
|
35
|
+
{
|
|
36
|
+
"matcher": "Write|Edit",
|
|
37
|
+
"hooks": [
|
|
38
|
+
{
|
|
39
|
+
"type": "command",
|
|
40
|
+
"command": "bash .claude/hooks/quality-gate.sh \"$TOOL_INPUT\""
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"PostToolUse": [
|
|
46
|
+
{
|
|
47
|
+
"matcher": "*",
|
|
48
|
+
"hooks": [
|
|
49
|
+
{
|
|
50
|
+
"type": "command",
|
|
51
|
+
"command": "bash .claude/hooks/audit-logger.sh \"$TOOL_NAME\" \"$TOOL_INPUT\""
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"Stop": [
|
|
57
|
+
{
|
|
58
|
+
"matcher": "",
|
|
59
|
+
"hooks": [
|
|
60
|
+
{
|
|
61
|
+
"type": "command",
|
|
62
|
+
"command": "bash .claude/hooks/context-monitor.sh"
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Content Skill
|
|
2
|
+
|
|
3
|
+
Procedures for creating, reviewing, and publishing content.
|
|
4
|
+
|
|
5
|
+
## When to Load
|
|
6
|
+
|
|
7
|
+
- Writing documentation, READMEs, or technical guides
|
|
8
|
+
- Creating marketing copy or announcements
|
|
9
|
+
- Reviewing content for accuracy and tone
|
|
10
|
+
|
|
11
|
+
## Content Creation Procedure
|
|
12
|
+
|
|
13
|
+
1. **Define audience**: Who is this for? What do they already know?
|
|
14
|
+
2. **Define purpose**: What should the reader DO after reading this?
|
|
15
|
+
3. **Outline**: Structure the content before writing
|
|
16
|
+
4. **Draft**: Write the content following project voice/tone
|
|
17
|
+
5. **Review**: Check for accuracy, clarity, completeness
|
|
18
|
+
6. **Polish**: Grammar, formatting, consistency
|
|
19
|
+
7. **Deliver**: Place in the correct location with proper metadata
|
|
20
|
+
|
|
21
|
+
## Quality Checklist
|
|
22
|
+
|
|
23
|
+
- [ ] Clear and specific headline/title
|
|
24
|
+
- [ ] Purpose stated in the first paragraph
|
|
25
|
+
- [ ] Logical flow from introduction to conclusion
|
|
26
|
+
- [ ] Technical accuracy verified against source code/docs
|
|
27
|
+
- [ ] No jargon without explanation (match audience level)
|
|
28
|
+
- [ ] Actionable — reader knows what to do next
|
|
29
|
+
- [ ] Formatted for scanability (headers, bullets, code blocks)
|
|
30
|
+
- [ ] Links verified and working
|
|
31
|
+
|
|
32
|
+
## Tone Guidelines
|
|
33
|
+
|
|
34
|
+
{{TONE_DESCRIPTION}}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Data Export Skill
|
|
2
|
+
|
|
3
|
+
Procedures for extracting, transforming, and exporting data.
|
|
4
|
+
|
|
5
|
+
## When to Load
|
|
6
|
+
|
|
7
|
+
- Exporting data from APIs or databases
|
|
8
|
+
- Generating reports or summaries
|
|
9
|
+
- Moving data between systems
|
|
10
|
+
|
|
11
|
+
## General Procedure
|
|
12
|
+
|
|
13
|
+
1. **Define scope**: What data, what time range, what format?
|
|
14
|
+
2. **Authenticate**: Ensure API keys/tokens are available
|
|
15
|
+
3. **Extract**: Pull data from source (API calls, DB queries, file reads)
|
|
16
|
+
4. **Transform**: Clean, filter, aggregate as needed
|
|
17
|
+
5. **Validate**: Spot-check numbers — do totals make sense?
|
|
18
|
+
6. **Export**: Write to target format (CSV, JSON, spreadsheet, etc.)
|
|
19
|
+
7. **Verify**: Confirm the output matches expectations
|
|
20
|
+
|
|
21
|
+
## Data Validation Rules
|
|
22
|
+
|
|
23
|
+
- Row counts should match between source and export
|
|
24
|
+
- Totals should sum correctly (watch for rounding)
|
|
25
|
+
- Date ranges should match the requested scope
|
|
26
|
+
- No duplicate rows unless expected
|
|
27
|
+
- No null/empty values in required fields
|
|
28
|
+
|
|
29
|
+
## Common Gotchas
|
|
30
|
+
|
|
31
|
+
- API pagination: Always check if there are more pages
|
|
32
|
+
- Timezone differences: Normalize all timestamps
|
|
33
|
+
- Rate limits: Add delays between API calls if needed
|
|
34
|
+
- Character encoding: Ensure UTF-8 throughout the pipeline
|