AgentSkillsCN

knowledge-base

事实、决策、架构、知识、永久、铭记于心、时刻知晓、决策、结果、经验教训

SKILL.md
--- frontmatter
name: knowledge-base
description: fact, decision, architecture, knowledge, permanent, remember forever, always know, decisions, outcomes, lessons learned

Knowledge Base - Permanent Facts and Decisions

Quick Start

Knowledge is PCP's permanent memory for facts that should never be forgotten:

  • Facts: "API rate limit is 100 req/min"
  • Architecture: "MatterStack uses Redis for caching"
  • Preferences: "the user prefers concise responses"
  • Decisions: Explicit choices with rationale and outcomes

Script: knowledge.py

Capture vs Knowledge - When To Use Each

Use CaseToolExample
Something the user says in conversationsmart_capture()"John mentioned the API is slow"
Permanent fact to remember foreveradd_knowledge()"API rate limit is 100 req/min"
Explicit decision with rationalerecord_decision()"Decided to use Redis for caching"

Rule of thumb:

  • Capture: Transient observations, conversations, notes
  • Knowledge: Permanent facts, architecture, preferences
  • Decision: Explicit choices that may need outcome tracking

Knowledge Functions

Add Knowledge

python
from knowledge import add_knowledge

# Basic usage
knowledge_id = add_knowledge("MatterStack uses Redis for session caching")

# Full options
knowledge_id = add_knowledge(
    content="API rate limit is 100 requests per minute",
    category="architecture",     # architecture|decision|fact|preference
    project_id=5,                # Link to project
    confidence=0.9,              # 0.0-1.0 confidence level
    source="John's email",       # Where this came from
    tags=["api", "limits"]       # Tags for organization
)

Query Knowledge

python
from knowledge import query_knowledge, list_knowledge, get_knowledge

# Search by content
results = query_knowledge("Redis")
results = query_knowledge("rate limit", category="architecture")

# List all or filtered
all_knowledge = list_knowledge()
facts = list_knowledge(category="fact")
project_knowledge = list_knowledge(project_id=5)

# Get by ID
knowledge = get_knowledge(42)

Update and Delete

python
from knowledge import update_knowledge, delete_knowledge

# Update (only provided fields change)
update_knowledge(42, content="Updated content", category="decision")

# Delete
delete_knowledge(42)

CLI Usage

bash
# Add knowledge
python knowledge.py add "MatterStack uses Redis" --category architecture
python knowledge.py add "the user prefers concise responses" --category preference --source "Observation"
python knowledge.py add "API limit is 100/min" --category fact --project 1 --tags "api,limits"

# Search
python knowledge.py search "Redis"
python knowledge.py search "rate limit" --category architecture

# List
python knowledge.py list
python knowledge.py list --category fact
python knowledge.py list --project 1 --limit 10

# Get by ID
python knowledge.py get 42

Decision Tracking

Decisions are special - they have outcomes that should be tracked.

Record a Decision

python
from knowledge import record_decision

decision_id = record_decision(
    content="Use Redis for caching instead of Memcached",
    context="Redis supports more data structures, team has experience",
    project_id=5,
    alternatives=["Memcached", "No caching", "In-memory only"]
)

Link Outcome (Later)

When you learn how a decision turned out:

python
from knowledge import link_outcome

link_outcome(
    decision_id=42,
    outcome="Redis worked well, 50% latency reduction",
    assessment="positive",       # positive|negative|neutral
    lessons_learned="Should have configured eviction policy earlier"
)

Find Decisions Needing Follow-up

python
from knowledge import get_decisions_pending_outcome, list_decisions

# Get old decisions without outcomes (default: 30+ days old)
pending = get_decisions_pending_outcome(days_old=30)

# List decisions with filters
all_decisions = list_decisions()
project_decisions = list_decisions(project_id=5)
decisions_with_outcomes = list_decisions(with_outcome=True)
pending_decisions = list_decisions(with_outcome=False)

CLI for Decisions

bash
# Record a decision
python knowledge.py decision "Use Redis for caching" --context "Team experience" --project 1
python knowledge.py decision "Hire contractor for UI" --alternatives "hire full-time,use agency"

# Link outcome
python knowledge.py outcome 42 "Redis reduced latency 50%" --assessment positive
python knowledge.py outcome 42 "Didn't work, too complex" --assessment negative --lessons "Start simpler"

# List decisions
python knowledge.py decisions
python knowledge.py decisions --pending           # Without outcomes
python knowledge.py decisions --with-outcome      # With outcomes
python knowledge.py decisions --project 1

Categories Explained

CategoryUse ForExamples
factObjective truths"API limit is 100/min", "John's email is x@y.com"
architectureTechnical decisions"Uses Redis", "Frontend is React"
decisionExplicit choices"Decided to use X over Y"
preferencethe user's preferences"Prefers concise responses"

When User Says...

User Says...Action
"Remember that X uses Y"add_knowledge(content, category="architecture")
"It's a fact that..."add_knowledge(content, category="fact")
"I prefer X"add_knowledge(content, category="preference")
"We decided to..."record_decision(content, context)
"That decision worked out because..."link_outcome(id, outcome, assessment)
"What do we know about X?"query_knowledge(query)
"What decisions have we made about X?"list_decisions(project_id=X)
"What decisions need follow-up?"get_decisions_pending_outcome()

Database Tables

TablePurpose
knowledgePermanent facts, preferences, architecture
decisionsExplicit decisions with outcome tracking

Knowledge Table Fields

  • id, content, category (architecture/decision/fact/preference)
  • project_id (optional link to project)
  • confidence (0.0-1.0)
  • source (where it came from)
  • tags (JSON array)
  • created_at, updated_at

Decisions Table Fields

  • id, content, context (rationale)
  • alternatives (JSON array of alternatives considered)
  • project_id, capture_id (optional links)
  • outcome, outcome_date, outcome_assessment (positive/negative/neutral)
  • lessons_learned
  • created_at

Related Skills

  • /vault-operations - Transient captures and searches
  • /brief-generation - Briefs include recently added knowledge
  • /project-health - Project context includes related knowledge