agentleFS
linxulelinxule/carrel/skills/self-improve/SKILL.md

self-improve

Skill2 starsChanged 6 days agoMITView on GitHub

This skill should be used when evaluating an external skill, MCP, or tool for absorption into Carrel ('should we absorb this', 'evaluate for absorption', 'does this overlap'), when Claude has just created a custom artifact for a researcher and needs to log it and update their environment dashboard, when promoting a recurring custom solution to a template ('promote this to a template', 'make this official'), when walking a researcher through a plugin version upgrade ('check for updates', 'what changed', '/carrel-migrate'), or during quarterly upstream review ('review upstream sources', 'what capabilities have we added', 'check registry').

36 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use ecosystem-reference, fractal-delegation and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • naman10parikhSkill

    ecosystem-reference

    Quick-access directory of Claude Code ecosystem repos, skills, plugins, MCPs, and patterns. Use when improving the harness.

    Also in 5 projects that use this

  • naman10parikhSkill

    fractal-delegation

    Also in 5 projects that use this

  • aaronjmarsSkill

    aeon-update

    Pull framework updates from the upstream Aeon repo into this instance - 3-way merges canon's new commits into a PR, never clobbering operator config.

    Also in 4 projects that use this

  • aaronjmarsSkill

    auto-workflow

    Two-mode aeon.yml workflow builder - analyze inspects URLs and emits a tiered, signal-verified skill-enablement plan plus an aeon.yml diff; enable flips slugs to enabled:true and opens a PR.

    Also in 4 projects that use this

  • +6 more from naman10parikh
  • +2 more from aaronjmars

The file

Show its rules and text

We split this skill into the rules it gives an agent

32 rules. 0 are common, 17 are distinctive, and 15 are very specific to this project.

  • 0

    Common

    Most of the 31 edited versions we read keep these.

  • 17

    Distinctive

    This author's own choices. Worth a look.

  • 15

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Every capability in a researcher's environment belongs to one of three layers:

    line 20
  2. Distinctive:

    Before evaluating, rule out the obvious:

    line 63
  3. Distinctive:

    If it passes the fast reject, proceed to the full evaluation.

    line 69
  4. Distinctive:

    When considering whether to absorb something, walk through these steps:

    line 73
  5. Very specific:

    Use the references/ pattern for heavy content — only loaded on demand.

    line 92
  6. Distinctive:

    If value is marginal, skip entirely regardless of cost.

    line 93
  7. Distinctive:

    Track: Add upstream source header to the reference file:

    line 108
  8. Very specific:

    Register: Add entry to references/capability-registry.md

    line 114
  9. Distinctive:

    Enable custom creation: Ensure the reference is complete enough for Claude to create new variations, not just use pre-built templates

    line 115
  10. Very specific:

    Wire into decision tree: If the capability should be offered during setup, add a branch to …

    line 116
  11. Very specific:

    When creating a new vault-local capability, NEVER add a carrel-template: marker.

    line 154
  12. Very specific:

    When carrel vault init copies a root .base tracker to the vault:

    line 168
  13. Distinctive:

    Check if a file with the same name already exists

    line 169
  14. Very specific:

    If yes AND it has a carrel-template: marker → skip (already installed, possibly customized)

    line 170
  15. Distinctive:

    If yes AND it has NO marker → skip (it's vault-local.

    line 171
  16. Distinctive:

    If no → copy the template (marker included)

    line 172
  17. Distinctive:

    When Claude creates a custom artifact for a researcher (a .base file not from templates, a novel callout pattern, a custom canvas layout, a …

    line 178
  18. Very specific:

    Add an entry to _meta/capability-log.md in the researcher's vault:

    line 186
  19. Very specific:

    When logging a custom creation, also mention it to the researcher: "I created a custom grant tracker for you — noted it in your capability …

    line 200
  20. Distinctive:

    When the same kind of custom artifact appears across multiple researchers (or the same researcher requests it repeatedly):

    line 206
  21. Very specific:

    Create a template: Add to plugin's templates/ with a carrel-template: marker and sensible defaults

    line 209
  22. Very specific:

    Update the relevant SKILL.md: Add to the "Available Templates" section

    line 211
  23. Very specific:

    When the researcher invokes /carrel-migrate or asks about updates, use a review-first sequence.

    line 219
  24. Very specific:

    Final apply: only after review/manual work, run the same command without --dry-run.

    line 242
  25. Very specific:

    Before the dry-run, briefly inspect .carrel/environment.json, installed tools, and vault guidance so migration advice is contextual.

    line 246
  26. Very specific:

    If plugin-state.json is missing, the first run establishes tracking at the current plugin version and reports no historical migration …

    line 250
  27. Distinctive:

    If no migrations or template findings remain, report that directly.

    line 255
  28. Very specific:

    Check each entry in references/capability-registry.md

    line 262
  29. Distinctive:

    If new features are research-relevant: update the reference file

    line 264
  30. Distinctive:

    If upstream has breaking changes: update templates and references

    line 265
  31. Distinctive:

    If upstream is abandoned: note in registry, consider the content frozen

    line 266
  32. Distinctive:

    Update the "next review" date in each reference file header

    line 267

“Common” is measured: kept by at least 6 in 10 of the 31 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

self-improve

Carrel grows by absorbing capabilities from the ecosystem and by learning from what researchers actually need. This skill manages the full lifecycle — from ecosystem evaluation to researcher-facing environment tracking.

When to Use

  • During development: evaluating a new external skill, MCP, or tool for absorption
  • After creating custom artifacts: Claude built a custom .base file, callout pattern, canvas, or workflow for a researcher — log it and update their environment dashboard
  • When the researcher's environment changes: new tool installed, MCP configured, custom tracker created — update _meta/my-environment.md
  • Periodic review: checking upstream sources for changes, reviewing what researchers have been requesting
  • Promotion decision: a custom solution keeps recurring — time to make it a template

Three Layers of Capability Tracking

Every capability in a researcher's environment belongs to one of three layers:

LayerOwnerWhat it tracksWhere it lives
Plugin registryDev teamWhat Carrel absorbed from the ecosystemPlugin source: self-improve/references/capability-registry.md
Capability logClaudeWhat Claude created in this vaultVault: _meta/capability-log.md
My environmentResearcherEverything — tools, MCPs, customs, what's available, what's not set up yetVault: _meta/my-environment.md

The plugin registry is for development — evaluating, absorbing, tracking upstream. The researcher never sees it.

The capability log is the feedback channel — Claude logs what it creates, dev team mines it for promotion candidates.

The my-environment dashboard is the researcher's own view. It's the living answer to "what can I do?" and "what else is available?" Claude maintains it, but the researcher owns it and can edit it directly.

Maintaining the Researcher's Dashboard

_meta/my-environment.md is created during setup (Step 8) from the templates/my-environment.md template. It should be updated whenever:

  • A tool is installed or removed → update the Installed Tools table
  • A cloud service is configured → update Cloud Services table
  • A plugin-shipped tracker is added to the vault → add to "From Carrel" section
  • Claude creates a custom tracker → add to "My Custom Trackers" section
  • The researcher installs an Obsidian community plugin → add to Obsidian Setup section
  • A skipped capability becomes available ("I got a Gemini key") → move from "Available but Not Configured" to the appropriate section

Present it to the researcher: "Your environment dashboard is at _meta/my-environment.md — it shows everything that's set up and what's available if you want to add more."

The Growth Loops

Loop 1: Absorb from Ecosystem (dev team)

External capability appears (new skill repo, MCP server, CLI tool, community template) → evaluate against criteria → absorb what's useful → reshape for research context → ship in next plugin version → researchers benefit.

Loop 2: Learn from Researchers (Claude → dev team)

Researcher needs something templates don't cover → Claude creates a custom solution using references → logs in capability log → updates researcher's dashboard → pattern emerges across users → dev team promotes to template → all researchers benefit.

Loop 3: Researcher Grows Their Environment (researcher)

Researcher discovers a need → asks Claude or does it themselves → adds tools, MCPs, Obsidian plugins, custom workflows → dashboard reflects the growth → "Available but Not Configured" shrinks as capabilities activate.

What NOT to Absorb (fast reject)

Before evaluating, rule out the obvious:

  • Code patterns or architecture docs — derive from reading the code
  • Anything already in Carrel's core library — the CLI is the source of truth
  • Capabilities with no clear research use case — just because it exists doesn't mean researchers need it
  • Capabilities that would bloat context without proportional value

If it passes the fast reject, proceed to the full evaluation.

Evaluating External Capabilities

When considering whether to absorb something, walk through these steps:

Step 1: Overlap Check

Does it duplicate something Carrel already has?

  • Full overlap → Skip (e.g., defuddle in obsidian-skills when Carrel has web-capture)
  • Partial overlap → Consider enriching what exists
  • No overlap → Evaluate further

Step 2: Specificity

  • Generic infrastructure (syntax refs, format specs, tool docs) → Good absorption candidate. Reshape for research context.
  • Domain-specific (research workflows, methodology) → Write internally. This is Carrel's moat.
  • Mixed → Split: absorb the generic layer, write the domain layer.

Step 3: Freshness Sensitivity

  • High (actively evolving upstream, like Obsidian features) → Absorb with quarterly review cadence
  • Low (stable specs, mature formats) → Absorb freely — won't drift meaningfully

Step 4: Token Cost vs. Value

  • Curate aggressively. Drop what researchers won't encounter.
  • Use the references/ pattern for heavy content — only loaded on demand.
  • If value is marginal, skip entirely regardless of cost.

Step 5: Audience

  • All researchers → Core inclusion
  • Subset → Include but gate behind decision tree (setup interview determines if it's relevant)

Absorbing a New Capability

Once evaluation passes:

  1. Curate: Extract only research-relevant content. Drop generic padding, decorative examples, edge cases researchers won't hit.
  2. Place:
    • Reference file → skills/<relevant-skill>/references/<name>.md
    • Templates → templates/<name>.<ext>
    • Judgment → add section to the relevant SKILL.md
  3. Track: Add upstream source header to the reference file:
    <!-- Source: owner/repo/path @ version (date) -->
    <!-- Curated for Carrel research context -->
    <!-- Review cadence: quarterly (next: YYYY-MM-DD) -->
  4. Register: Add entry to references/capability-registry.md
  5. Enable custom creation: Ensure the reference is complete enough for Claude to create new variations, not just use pre-built templates
  6. Wire into decision tree: If the capability should be offered during setup, add a branch to skills/environment-setup/references/decision-tree.md

Plugin-Shipped vs. Vault-Local Capabilities

Two namespaces of capabilities coexist in every vault. They must never collide.

Plugin-shipped (updates with Carrel)

The four shipped root .base trackers come from Carrel's templates/ directory and carry # carrel-template: name v0.0.0 markers. Current drift detection is deliberately limited to these Base trackers; ordinary scaffolded Markdown and JSON files are not marker-versioned by this contract.

Example for .base files:

# carrel-template: paper-tracker v0.4.0
# Do not remove this marker — it helps Carrel detect updates.
# Safe to customize everything below.

Rules:

  • Plugin updates NEVER overwrite vault tracker copies. Templates in templates/ update; vault copies are untouched.
  • /carrel-migrate reports marker-version drift against the plugin's current templates. The skill may then offer a diff; the CLI never overwrites the vault copy or claims to have applied the template update.
  • Researchers can freely edit plugin-shipped files. The marker stays for version tracking, but the content is theirs.

Vault-local (researcher's own)

These are capabilities Claude creates during sessions or the researcher builds themselves. They have no carrel-template: marker. Arbitrary custom filenames are outside migration tracking; a file that reuses a known shipped template filename but lacks a valid marker is reported as unversioned_templates so the collision is visible without changing it.

Where they live:

  • .base files → vault root (alongside plugin-shipped ones)
  • Custom references, callout patterns, workflows → _meta/local/
  • The capability log → _meta/capability-log.md

Rules:

  • Plugin updates NEVER touch files without a carrel-template: marker.
  • Plugin updates NEVER touch _meta/local/ or _meta/capability-log.md.
  • /carrel-migrate ignores arbitrary vault-local filenames. It only reports a known shipped-template filename without a valid marker as unversioned, and never modifies it.
  • When creating a new vault-local capability, NEVER add a carrel-template: marker. That namespace is reserved for plugin-shipped content.

How to tell them apart

Plugin-shippedVault-local
Has carrel-template: markerYesNever
Updated by pluginTemplate source updates; vault copy untouchedNever touched
Created bycarrel vault init (scaffold)Claude during sessions, or researcher manually
Migrate behaviorReports marker version drift; never overwrites vault copiesArbitrary names ignored; known shipped-name collisions reported as unversioned
Examplespaper-tracker.base, interview-tracker.basegrant-tracker.base, custom callout patterns

Scaffold behavior

When carrel vault init copies a root .base tracker to the vault:

  1. Check if a file with the same name already exists
  2. If yes AND it has a carrel-template: marker → skip (already installed, possibly customized)
  3. If yes AND it has NO marker → skip (it's vault-local; don't overwrite)
  4. If no → copy the template (marker included)

This means: scaffolding is always safe to re-run. It never overwrites anything.

Logging Custom Creations

When Claude creates a custom artifact for a researcher (a .base file not from templates, a novel callout pattern, a custom canvas layout, a new workflow), do two things:

1. Save the artifact without a marker

Save to the vault root (for .base files) or _meta/local/ (for references, patterns, workflows). Do NOT include a carrel-template: marker — this marks it as vault-local.

2. Append to the capability log

Add an entry to _meta/capability-log.md in the researcher's vault:

## YYYY-MM-DD: [short description]
- **Type**: base | callout-pattern | canvas | workflow | other
- **What**: [what was created and why]
- **Researcher need**: [what the researcher asked for]
- **Based on**: [which reference was used, e.g., "research-databases.md"]
- **Reusable?**: yes | maybe | no (one-off)
- **Template candidate?**: [if yes, what would the template look like]

This log lives in the researcher's vault (in _meta/), not in the plugin source. The dev team aggregates across vaults during review sessions.

When logging a custom creation, also mention it to the researcher: "I created a custom grant tracker for you — noted it in your capability log for potential inclusion in future Carrel versions."

The session reflection hook (hooks/session-reflect.js) reads _meta/capability-log.md at session end and surfaces any entries from today: "Custom capabilities created today: 2 — grant-tracker, field-notes-callouts." This closes the feedback loop without requiring the researcher to do anything.

Promoting Vault-Local to Plugin-Shipped

When the same kind of custom artifact appears across multiple researchers (or the same researcher requests it repeatedly):

  1. Extract the pattern: What's common across instances? What varies?
  2. Create a template: Add to plugin's templates/ with a carrel-template: marker and sensible defaults
  3. Add to decision tree: Under what interview conditions should this be offered?
  4. Update the relevant SKILL.md: Add to the "Available Templates" section
  5. Update capability registry: Mark as promoted from ad-hoc to template
  6. Migration note: In the next version's migration file, mention: "New template available: grant-tracker.base. If you created one locally, you can keep yours or switch to the official version."

Researchers who already created a local version keep it. The plugin-shipped version is available for new vaults and for researchers who want to switch.

Walking a Researcher Through a Plugin Upgrade

When the researcher invokes /carrel-migrate or asks about updates, use a review-first sequence. The CLI computes registry and template drift deterministically; the skill explains consequences and paces manual work.

Sequence

  1. Dry-run:

    carrel migrate apply --dry-run --format json [--plugin-root <path>] --vault .

    --plugin-root normally comes from ${CLAUDE_PLUGIN_ROOT}. Override it only when deliberately inspecting another installation.

  2. Inspect: for every pending[].file in the dry-run payload, read that file under <plugin-root>/migrations/ before summarizing or performing its manual steps; the payload names migration files but does not contain the step bodies. Also summarize outdated_templates and unversioned_templates. Template findings are informational: never overwrite a vault copy automatically, even when it still carries a Carrel marker.
  3. Manual steps: perform only the steps the researcher approves, one at a time. A template update means offer a diff or a new copy; preserve local customization.
  4. Final apply: only after review/manual work, run the same command without --dry-run. This atomically advances plugin-state.json; it does not rewrite tracker templates.

Before the dry-run, briefly inspect .carrel/environment.json, installed tools, and vault guidance so migration advice is contextual. Translate migration prose into researcher-facing capabilities rather than reciting implementation notes.

If plugin-state.json is missing, the first run establishes tracking at the current plugin version and reports no historical migration replay. Explain that the vault is now enrolled in migration tracking; do not claim every past migration was applied.

If no migrations or template findings remain, report that directly. Do not manufacture recommendations merely to fill the conversation.

Reviewing Upstream Sources

Quarterly (or when a major upstream release happens):

  1. Check each entry in references/capability-registry.md
  2. Visit the upstream source — has anything changed?
  3. If new features are research-relevant: update the reference file
  4. If upstream has breaking changes: update templates and references
  5. If upstream is abandoned: note in registry, consider the content frozen
  6. Update the "next review" date in each reference file header

Related

  • CLI: carrel migrate apply (walks the migration registry and updates plugin-state.json)
  • Commands: /carrel-migrate (thin wrapper that invokes this skill)
  • References: references/capability-registry.md (what's been absorbed and when)
  • Skills: vault-ops (where most absorbed Obsidian capabilities land), environment-setup (decision tree for offering capabilities), env-doctor (the pre-upgrade install check)
  • Hooks: session-reflect.js (captures what Claude built during a session); check-version.js (surfaces the upgrade prompt on session start)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.