Experience and Skill solve different problems
Experience keeps judgment
Experience has four parts.Skill keeps operating instructions
A managed Skill contains a name, a description used by the host for discovery, instructions, and validation checks. Skill is not ordinary Memory. It never enters PreparedContext and does not appear in an agent’s Skill directory merely because Review approved it.The shared Candidate lifecycle
Both objects start as a proposal and wait for Review. A enters first. Revise a proposal withversion. Approval creates an Artifact Revision.
pending can be inspected, revised, approved, or rejected. approved is terminal and must include a result_artifact. rejected is also terminal. It must include a reason and creates no result Artifact.
Every Candidate cites at least one exact Source or Artifact as evidence. The current combined limit is 32 Source and Artifact references.
Propose and generate
A proposal can come from you, or a model can draft it from bounded evidence.Typed propose
When the content is already known, submit a structured proposal. The common operations arepropose_experience and propose_skill.
No generation model is required. The result is still a pending Candidate.
Model-backed generate
A model can draft a Candidate from bounded evidence. The common operations aregenerate_experience and generate_skill.
Generation may return a pending Candidate or an explicit no-op. Without a generation provider, the operation fails before persisting a Candidate.
A well-formed model response is never automatic approval.
Candidate version is not Artifact Revision
Each revise operation creates another proposal version. A Review write suppliesexpected_version, which binds the decision to the version that the reviewer inspected.
If one reviewer reads v1 and another revises it to v2 first, the older approve call conflicts.
Approval is transactional
Approve runs one database transaction. It locks the pending Candidate, validatesexpected_version and lineage, then creates or revises the Artifact. For Experience it also updates the approved-head search projection. Finally it marks the Candidate approved and records the exact result_artifact.
If the Candidate status update fails, the Artifact commit rolls back too. PowerContext does not leave an Artifact committed while its Candidate remains pending.
Reject creates no Artifact. It records the terminal decision and reason.
How Experience reaches recall
An Experience can enter PreparedContext only when all of these are true. The Candidate is approved. It is the current head of its Experience artifact. It uses the same Scope as the request. Search and the PreparedContext builder treat it as relevant. Pending, rejected, and historical Experience Revisions do not enter automatic recall. After approval of a replacement Experience, the old Revision remains available by exact read, but default recall uses the new head.Skill provenance
Model-backed Skill generation supports three origins.
Approval of a new managed Skill applies an additional lineage rule. Artifact evidence should be Experience, not another Skill.
A Skill replacement includes the target Skill and at least one bounded Source. The Server validates reference shape, not whether the Source text proves useful real-world usage. That judgment remains with the reviewer. A model cannot read only the old Skill text and promote a self-written next version.
Approval, export, and execution
Keep these operations separate.Approval
Approval creates an exact Skill Revision, for exampleskill/SKILL_ID@1. Nothing changes in the host filesystem yet.
Export
The CLI reads an exact approved Revision and produces a host-local package.powercontext.json stores the agent kind, exact ArtifactRef, and SHA-256 of rendered SKILL.md. The managed Artifact remains authoritative. The directory is a rebuildable copy.
The current CLI export targets are codex and claude_code.
Do not infer managed Skill export support for Hermes, OpenClaw, DSH, OpenCode, or Pi.
Execution
PowerContext does not execute the exported Skill or grant tool permissions. The host decides when to discover it, while the user or host policy decides whether its operations may run.Two publication surfaces
Direct CLI export is create-only. It refuses an existing destination. Server-managed safe publish is a separate surface. It creates or updates only when the projection is still PowerContext-managed, has not drifted, and isunpublished or update_available.
Common projection states include unpublished, current, update_available, conflict, drifted, and incompatible.
A foreign directory, local edits, multiple projections for one Artifact, or a newer published Revision cannot be silently overwritten.
Managed, external, and bundled Skills
These names refer to different objects.
A bundled
project-context Skill in an OpenCode, Pi, Codex, or Claude Code integration does not imply managed Skill export support. Those features are unrelated.
External Skill import or fork also does not create an approved Artifact. It creates a managed Candidate for Review, and arbitrary package scripts or assets do not execute as a side effect.
Complete the OpenAPI example
1. Prepare evidence
Capture the contract-test result as a Source and keep the exact SourceRef.2. Experience Candidate
Propose or generate this judgment.3. Review
Read Candidate v1 and revise the lesson to produce v2. An intentionalapprove(expected_version=1) should conflict. Read v2 again, then approve it to get experience/EXPERIENCE_ID@1.
A later relevant prepare_context may now recall the approved Experience.
4. Skill Candidate
Use the Experience Revision as origin and generate.skill/SKILL_ID@1.
PreparedContext still does not contain it. That is the expected result.
5. Export
Export exact@1 to each supported host directory. Inspect the SKILL.md content and confirm that powercontext.json refers to the same exact ArtifactRef.
Edit SKILL.md manually and inspect again. The projection should become drifted, and safe publish must refuse to overwrite it.
Common failures
Generation succeeded, but the Review Inbox is empty
The operation may have returned no-op. Inspect the response instead of assuming every generation creates a Candidate.An approved Experience is not recalled
Check Scope, current-head status, query relevance, and the PreparedContext byte budget.The Skill is approved, but the agent cannot see it
Approval does not export. Confirm that the exact Revision was exported into a directory the current host scans.Export reports that the destination exists
Direct CLI export does not overwrite. Inspect whether the directory is foreign, managed-current, update-available, or drifted before keeping it, selecting another path, or using controlled managed publish.A replacement Candidate keeps conflicting
The target Skill head may have advanced. Read the current target and Candidate again rather than changing expected versions blindly.How you know the layers are separate
- Candidate version and Artifact Revision are different numbers.
- Propose and generate stop at pending or no-op.
- Approve and reject bind the inspected
expected_version. - Experience recall uses only the approved current head.
- Skill remains outside PreparedContext.
- Approval, export, and execution stay three steps.
- Codex and Claude Code are the only current export targets listed.
- Local drift and conflict prevent overwrite.
Next
Start a local Server
Write a Memory, find it, then get a cited PreparedContext.
Finish one Review
Submit a Candidate from exact evidence, check the version, then approve or reject.

