Verified skill accumulation for AI agents - your agent proves it can do something, then remembers that it can. MCP server.
Praxis demonstrates solid tool design with clear naming (verb_noun pattern), comprehensive input schemas with proper JSON Schema structure, and detailed parameter descriptions. All 9 tools have explicit schemas and descriptions. However, output schemas are not documented, LLMs cannot predict return structures. Error handling is basic (wrapTool catches exceptions but provides minimal recovery guidance). Tool descriptions average ~150 chars, within baseline (194 chars p50). Parameters are well-constrained (enums, maxLength, min/max bounds). Composition is strong: tools are single-responsibility and chain naturally (recall_skills → run_skill → reinforce). Security is adequate: no secrets in params, but no explicit permission gates or audit trail declarations.
Run a consolidation pass: regression-safe dedup-merge + cold eviction.
Library health: total/verified/quarantined/negatives, tier counts, weak-test count, top skills.
Pin a skill so it is never evicted or demoted by tiering.
Retrieve the top-k verified skills for a query, plus known failure modes (negatives) to check before retrying.
Record a known failure mode as a first-class negative skill, surfaced before similar retries.
Record a usage outcome. 'failure' re-runs the acceptance test; a now-broken skill is quarantined.
Capture a solved task as a skill. Kept ONLY if its acceptance test passes in the sandbox (verify-before-keep).
Output schemas not documented. LLMs cannot predict return structures for any tool. recall_skills returns {skills, negatives, costEstimate}, library_stats returns stats object, but these are inferred from code, not declared in tool definitions.
Error handling is minimal. wrapTool catches exceptions and returns isError:true, but provides no recovery guidance. Errors like 'skill not found' or 'acceptance test failed' do not suggest next steps (e.g., 'Try recall_skills() to find similar skills').
Tool descriptions lack context on when to use each tool vs. alternatives. 'Retrieve the top-k verified skills' does not explain when to call recall_skills vs. library_stats, or how to interpret negatives. Descriptions should answer: What does it do? When should I call it? What does it return?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Execute a verified skill (composing verified sub-skills if its code calls them) on an input.
Compile verified hot skills to Claude Code SKILL.md dirs (praxis-* namespace). Idempotent; a skill that loses its proof gets its export marked stale. Ingests flywheel ledger usage first when present.
No permission gates or scope declarations. Tools like remember_skill (WRITE), sync_skills (WRITE), and consolidate_now (WRITE) modify state but do not declare required permissions or check caller authority. No audit trail declarations.
Generic tool names reduce clarity. 'consolidate_now' and 'library_stats' are vague. 'consolidate_now' should be 'consolidate_skill_library' or 'dedup_and_evict_skills'. 'library_stats' should be 'get_library_health' or 'describe_library_state'.