| name | project-knowledge |
| description | Shared project knowledge document that human and agent can both read and update. Aggregates state from /project-state, /checkpoint, /memory into a single PROJECT_KNOWLEDGE.md file, while syncing searchable chunks into /memory. Coordinator skill — composes rather than reimplements.
|
| triggers | ["project knowledge","what do we know","current understanding","update knowledge","sync knowledge"] |
| allowed-tools | ["Bash","Read","Write","Edit","Glob","Grep"] |
| provides | ["project-knowledge-file","shared-context"] |
| composes | ["project-state","checkpoint","memory"] |
| taxonomy | ["knowledge-management","coordination","documentation"] |
STOP. READ THIS ENTIRE SKILL.MD BEFORE CALLING ANY ENDPOINT.
/project-knowledge
Shared project knowledge document for human and agent collaboration.
Why This Exists
The gap between individual lessons (/memory) and heavy documentation (/create-walkthrough):
| Skill | Retrieval | Update |
|---|
/memory | Requires knowing what to query | Individual lessons |
/checkpoint | Git log | Append-only commits |
/create-walkthrough | File on disk | Heavy (interview + persona) |
/project-knowledge | Read file directly | Incremental section updates |
This skill maintains two surfaces:
PROJECT_KNOWLEDGE.md as the human-readable projection
/memory as the agent retrieval surface
The file is for humans. Agents should still be memory-first.
This skill therefore:
- Lets humans read/edit the markdown file directly
- Lets agents update the same knowledge incrementally
- Automatically syncs each updated section into
/memory
- Keeps an aggregate
project_knowledge document for structured recall
Commands
./run.sh read
./run.sh read --refresh
./run.sh update "Current Understanding" "Lineage backfill works at 25K batches"
./run.sh decide "Batch at 25K not 225K" "Daemon 502s at ~27K docs"
./run.sh question "Cascade notification when lineage deps change?"
./run.sh sync
./run.sh init
./run.sh diff
File Structure
PROJECT_KNOWLEDGE.md lives in the project root:
# Project Knowledge: {project-name}
**Last updated:** YYYY-MM-DD HH:MM by {human|agent}
**Status:** {Active development|Maintenance|Archived}
## Current Understanding
- Key insight 1
- Key insight 2
## Recent Decisions
| Date | Decision | Why |
|------|----------|-----|
| YYYY-MM-DD | What was decided | Rationale |
## Open Questions
- [ ] Question 1
- [ ] Question 2
## Key Files
| File | Purpose |
|------|---------|
| path/to/file.py | What it does |
## Infrastructure State
<!-- Auto-populated from /project-state --quick -->
Composition
/project-knowledge coordinates existing skills:
| Source | What It Provides | When Used |
|---|
/project-state --quick | Infrastructure health | read --refresh, diff |
/checkpoint --recent | Last N commits + skill chains | read --refresh |
/memory recall "project:X" | Prior learnings | read --refresh, sync |
git log --oneline -10 | Recent commit messages | read --refresh |
Hook Integration
Recommended hooks to keep knowledge fresh:
{
"hooks": {
"PostToolUse": [
{
"matcher": {"tool_name": "checkpoint"},
"command": "~/.claude/skills/project-knowledge/run.sh update-from-checkpoint"
}
]
}
}
Sync to Memory
Every update command syncs to /memory automatically.
./run.sh sync is still available for repair/backfill and writes:
This enables cross-project recall:
/memory recall "project:memory lineage backfill"
For agents, this is the authoritative retrieval path. Do not treat the markdown
file as the only source of truth.
Common Mistakes
./run.sh init
./run.sh read
./run.sh update "Current Understanding" "new insight"
./run.sh update "Current Understanding" "completely new content replacing everything"
./run.sh update "Current Understanding" --append "additional insight"
./run.sh update "Current Understanding" "new insight"
./run.sh sync
Agent Retrieval Pattern
Humans can read the file directly:
knowledge_file = Path.cwd() / "PROJECT_KNOWLEDGE.md"
if knowledge_file.exists():
print(f"Reading human-facing project knowledge from {knowledge_file}")
Agents should recall from /memory first:
/memory recall "project:{name} current understanding"
Use the file as a readable projection, not as the primary retrieval surface for
problem solving.