Skip to content
jbsanfPublic

About

Repo-native memory and continuous learning for AI coding agents.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

Skillver

License Version Compatibility

Repo-native memory and continuous learning for AI coding agents.

Skillver is a single agent skill that makes an agent remember two different kinds of things:

  • What each feature of this project actually is right now — status, current behavior, decisions, risks, and which documents are still the source of truth.
  • Verified techniques worth reusing — non-obvious fixes, project-specific constraints, and tool quirks, preserved as reusable skills.

Both live as plain Markdown inside your repository, so the memory survives new sessions, new chats, and switching between agents.

Spec frameworks help an agent plan the next change. Skillver helps an agent remember the project and get better at working on it.


Why

Project knowledge needs a durable, shared location across tools and sessions:

  • Feature knowledge is scattered across PRDs, API notes, plans, old chats, and commits.
  • Without a current feature index, agents may repeat discovery work.
  • Stale plans keep looking authoritative long after reality moved on.
  • The same non-obvious bug gets re-debugged from scratch, because nothing captured the root cause.
  • A new session or tool may not receive the earlier context.

Skillver fixes this with two durable layers in the repo, and nothing else. No database, no chat-history search, no new development lifecycle.


The two pillars

1. Feature memory

A global index plus one small living track per feature, all under .agent-memory/:

.agent-memory/
└── features/
    ├── README.md              # global feature index
    └── <feature-id>/
        ├── README.md          # current feature memory
        ├── prd/
        ├── api/
        ├── plans/
        └── archive/

Each feature track answers: What is true now? Which docs are still the source of truth? Which decisions must future work preserve? What risks and rollout constraints matter? What changed recently?

Tracks link to your existing docs instead of replacing them, so brownfield projects can adopt this in minutes. Memory stays out of docs/, which remains yours to write for human readers.

.agent-memory/ is hidden but it is not scratch space. Keep it version-controlled under your project's workflow. Skillver does not authorize commits or changes to repository policy.

2. Skill extraction

During authorized implementation, knowledge that is reusable, specific, non-trivial, and verified can become a local skill:

.agents/skills/<skill-name>/SKILL.md

Extraction is deliberately selective. Routine work produces no skill. A useful extraction records distinguishing conditions, the proven procedure, relevant failed approaches, and observed verification. A documented technique can qualify when the contribution is a verified contextual choice, sequence, or constraint; investigation time alone does not establish value. Related skills are reused or refined instead of duplicated.

How they work together

flowchart LR
    sessionStart[Relevant task] --> readIndex["Read existing feature index"]
    readIndex --> readTrack["Read relevant feature track"]
    readTrack --> scope{"Implementation authorized?"}
    scope -->|no| answer["Answer or propose"]
    scope -->|yes| work[Do the work]
    work --> updateTrack["Update changed durable memory"]
    work --> evaluate{"Reusable, specific, non-trivial,<br/>verified knowledge?"}
    evaluate -->|yes| extract["Extract or update a skill"]
    evaluate -->|no| skip["Skip extraction"]
    updateTrack --> done[Session end]
    answer --> done
    extract --> done
    skip --> done
Loading

Feature memory is project state: it changes as the product changes. Extracted skills are reusable technique: they may depend on project-specific conventions, but do not store current product status. Explicit requests to save a skill or set up memory also authorize their respective local writes.


Install

npx skills

npx skills add jbsanf/skillver

The skills CLI discovers skills/skillver/ and installs the whole directory (SKILL.md, references/, and templates/) into the agents you choose. Without -a, it prompts for which agents to install into. A project install typically lands in .agents/skills/skillver/, which OpenCode, Cursor, Codex, and several other agents already read.

# every project (user-level)
npx skills add jbsanf/skillver -g

# a specific agent (claude-code, cursor, opencode, codex, ...)
npx skills add jbsanf/skillver -a claude-code

# copy files instead of symlinking
npx skills add jbsanf/skillver --copy

Manual copy

If you prefer not to use Node, copy skills/skillver/ yourself. The directory is self-contained: the reference files and the templates travel with it, so copy it whole rather than SKILL.md alone.

OpenCode, per project or globally:

# per project
mkdir -p .opencode/skills
cp -r skills/skillver .opencode/skills/

# or globally, for every project
mkdir -p ~/.config/opencode/skills
cp -r skills/skillver ~/.config/opencode/skills/

Or clone this repository somewhere and copy from there:

git clone https://github.com/jbsanf/skillver /tmp/skillver
cp -r /tmp/skillver/skills/skillver ~/.config/opencode/skills/

OpenCode discovers the skill from the SKILL.md frontmatter and loads it on demand through its native skill tool. Nothing else is required.

To confirm it loaded, ask the agent to list its available skills, or call it explicitly:

skill({ name: "skillver" })

The same copy works in the other agents' skill directories:

Agent Path
OpenCode .opencode/skills/skillver/ or ~/.config/opencode/skills/skillver/
Claude Code .claude/skills/skillver/ or ~/.claude/skills/skillver/
Codex .agents/skills/skillver/ or ~/.agents/skills/skillver/
Cursor .cursor/skills/skillver/ or ~/.cursor/skills/skillver/
Any agent reading the neutral path .agents/skills/skillver/ or ~/.agents/skills/skillver/

OpenCode and Cursor both also read .claude/skills/ and .agents/skills/, so a single install in the neutral path can serve several agents at once. Prefer one installation per agent to avoid divergent copies. Duplicate-name behavior is host-specific: Codex does not merge skills with the same name, and both can appear in selectors. The Codex paths above follow current documentation; earlier .codex/skills/ locations may still be exposed by a particular host, so inspect its catalog before relocating an existing install.


Usage

Skillver supports automatic use within the authorized task. For non-trivial feature work, the agent reads existing memory, checks relevant claims against current evidence, and records meaningful changes. Queries, retrospectives, reviews, and planning-only requests produce answers or proposals unless writing is also authorized. Trivial one-off tasks and unchanged memory do not require updates.

Validation covers touched tracks and their index entries. Setup and explicit documentation audits check the whole memory; findings can justify broader checks. Existing documentation locations, headings, statuses, and documented index exclusions are preserved. New tracks retain the six template sections and label unknown information rather than inventing facts.

Credentials, tokens, internal URLs, and customer data must not enter tracks, extracted skills, examples, or verification evidence. Finding a related personal or third-party skill does not authorize changing it.

You can also drive it explicitly:

Say this The agent does this
"Set up Skillver in this repo" Creates the index and tracks for requested or clearly documented features
"What do we know about the billing feature?" Reads the index and the billing track before answering
"Track this as a feature" Creates a feature track and indexes it
"What did we learn?" Reviews the session and proposes skills to extract
"Save this as a skill" Saves qualifying knowledge locally, reusing or refining related skills when appropriate
"Check the feature docs" Reports index drift, missing sections, and broken local links; does not imply permission to fix them

What memory looks like

The global index at .agent-memory/features/README.md:

| Feature | Status | Track | Source Of Truth | Updated | Notes |
|---|---|---|---|---|---|
| Skillver Skill | active | [README](skillver-skill/README.md) | [SKILL.md](../../skills/skillver/SKILL.md), [README](../../README.md) | 2026-09-10 | Scope-aware memory and extraction; behavioral comparison pending |
| Agent Compatibility | active | [README](agent-compatibility/README.md) | [README install section](../../README.md#install) | 2026-09-10 | One portable package; Codex discovery guidance updated, cross-agent runtime checks not repeated |

A feature track keeps the current truth next to the files that prove it:

## Current Status

Billing runs on Stripe Checkout for new customers; legacy invoicing is read-only.

## Source Of Truth

- Product behavior: [prd/billing.md](prd/billing.md)
- Webhook contract: [api/webhooks.md](api/webhooks.md)

## Decisions

- Webhooks are the only trusted source for subscription state.
- Never trust the client-side success redirect to grant entitlements.

An extracted skill records the trigger and the real cause:

---
name: stripe-webhook-signature-failures
description: |
  Fix "No signatures found matching the expected signature" from Stripe webhooks.
  Use when: (1) webhook verification fails only in staging, (2) the payload works
  in the Stripe CLI but not in the deployed app, (3) a body parser runs before
  verification. Covers raw body handling in Express and Next.js route handlers.
---

This repository uses Skillver on itself. See .agent-memory/features/README.md.


Repository layout

skills/skillver/                      # discovered by `npx skills add jbsanf/skillver`
├── SKILL.md                          # the skill an agent loads
├── references/
│   ├── feature-memory.md             # feature index and track format, validation rules
│   └── skill-extraction.md           # extraction criteria, quality gates, versioning
└── templates/
    ├── feature-index.md              # copy for a new global index
    ├── feature-track.md              # copy for a new feature track
    └── extracted-skill.md            # copy for a newly extracted skill
.agent-memory/features/               # Skillver applied to this repo
tests/behavioral-evaluation.md         # comparative scenarios and acceptance criteria
.github/workflows/links.yml           # CI: broken local links and anchors

SKILL.md stays short on purpose. The agent loads a reference file only when it is about to do that specific job.

Validation

CI checks local Markdown links and anchors. It does not establish behavioral quality or compatibility with every agent. The comparative evaluation protocol covers scope, evidence, extraction, and safety, with separate checks for selection and execution. Text reduction alone is not evidence of better results or lower total task cost.


Design principles

  • Memory, not ceremony. Small files, no mandated process, no gates on every change.
  • Current truth over stale specs. A track records what is true now and links to the rest.
  • Link first, migrate later. Point at the docs you already have.
  • Selective learning. Fewer, high-signal skills beat broad coverage.
  • Agent-neutral by default. Plain Markdown in plain paths; the repo is the memory.

Credits

Skillver combines the goals of two excellent projects, and would not exist without them:

  • feature-track by @JunsW — repo-native shared feature memory for AI coding agents. Skillver retains the index and six-section track structure based on spec v0.1, with a different memory root; formal compatibility has not been revalidated.
  • Skiller by @markdav-is — autonomous skill extraction and continuous learning. Its approach informed the extraction criteria, quality gates, and skill lifecycle, adapted here for task scope and contextual value.

napkin by @blader was also part of the original inspiration for keeping agent knowledge in a repo-local Markdown file. Skillver deliberately leaves the per-session runbook out of scope; use napkin alongside Skillver if you want it.

Skillver is an independent project and is not affiliated with or endorsed by the projects above.


Contributing

Issues and pull requests are welcome. Keep the format portable, keep SKILL.md short, and keep validation friendly to existing projects.


License

MIT

About

Repo-native memory and continuous learning for AI coding agents.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors