Continual learning
Skill JunfengRan/dev-env/plugins/continual-learning-rules/skills/continual-learning
Cursor agent workflow pack: Spec state machine, ContextPack, and deterministic gates for deep research.
npx -y skills add JunfengRan/dev-env --skill continual-learningAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 13 days oldThe repository was created 13 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Incrementally extract recurring user corrections/preferences and durable workspace facts from transcript changes, then route them into categorized .cursor/rules/*.mdc files. Use when the user asks to mine previous chats, maintain learned rules, or build a self-learning preference loop.
SKILL.md
5.0 KB, as published. Nobody here has run it
Continual Learning
Extract recurring user corrections/preferences and durable workspace facts from conversation transcripts, and route them into the appropriate .cursor/rules/*.mdc file.
Inputs
- Transcript root:
~/.cursor/projects/<workspace-slug>/agent-transcripts/ - Rules directory:
.cursor/rules/ - Incremental index:
.cursor/hooks/state/continual-learning-index.json
Workflow
- Scan existing rules — Read every
.mdcfile under.cursor/rules/(including subdirectories). For each file, note itsdescriptionfrontmatter and the topics it covers. - Load incremental index if present.
- Discover transcripts and process only:
- new files not in index, or
- files whose mtime is newer than indexed mtime.
- Extract high-signal items — Look for recurring user corrections/preferences and durable workspace facts. Apply the inclusion bar below.
- Route each item to the best-matching rule file:
- Match by topic against existing
.mdcfiles' descriptions and content. - If no file is a good fit, create a new
.mdcin the appropriate subdirectory (see Rule File Layout).
- Match by topic against existing
- Merge into target file:
- Update matching bullets in place (don't duplicate).
- Append net-new bullets under the most relevant section heading.
- Deduplicate semantically similar bullets.
- Write back the incremental index.
Rule File Layout
Organize rules by package, matching the monorepo structure:
.cursor/rules/
├── dev-workflow.mdc # alwaysApply: true — global habits
├── web/
│ ├── ui-development.mdc # globs: packages/web/**/*.{vue,ts,scss}
│ ├── state-management.mdc # globs: packages/web/src/stores/**
│ └── ...
├── server/
│ └── api-patterns.mdc # globs: packages/server/**/*.ts
├── desktop/
│ └── electron-ipc-patterns.mdc # globs: packages/desktop/**/*.ts
└── sdk/
└── opencode-sdk-reference.mdc # globs: packages/sdk/**, packages/web/src/context/**
Creating a new rule file
When an item doesn't fit any existing file, create one following this template:
---
description: <one-line summary — Agent uses this to decide relevance when no matching files are open>
globs: <glob pattern for auto-attach when matching files are in context>
alwaysApply: false
---
# <Title>
<bullets go here>
Cursor loads rules in four ways (in order of reliability):
- Always Apply (
alwaysApply: true) — every session, guaranteed - Glob auto-attach (
globsset) — when matching files are in context - Agent-decided (
descriptionset, no globs) — Agent judges relevance from description - Manual (
@rule-name) — only when user explicitly mentions
Best practice: always set both description AND globs. This gives you glob-based auto-attach as the primary trigger, with description as a fallback so Agent can still pick up the rule when discussing related topics without opening specific files.
- Set
alwaysApply: trueonly for cross-cutting workflow rules. - Set
globsto the narrowest pattern that covers the relevant source files. - Place the file in the subdirectory matching the monorepo package (
web/,server/,desktop/,sdk/). If it spans multiple packages, put it at the rules root.
Inclusion Bar
Keep an item only if all are true:
- Non-obvious: not in official docs or standard language/framework behavior
- Actionable: directly usable in future sessions
- Durable: stable across sessions, not tied to a specific branch or commit
- Repeated or explicit: appeared in multiple transcripts, or user explicitly stated it as a broad rule
- Non-sensitive: no secrets, tokens, credentials, or private personal data
What qualifies
- API quirks, tool limitations, framework traps discovered by trial and error
- Problems that took multiple attempts to solve
- Upstream code paths that differ from what the surface API suggests
- Design principles agreed upon after discussion and correction
- Gotchas likely to recur during future maintenance
What does NOT qualify
- Facts already obvious from official documentation
- Standard language/framework behavior
- Content already present in an existing rule file (avoid redundancy)
- One-off task instructions or transient details (branch names, commit hashes, temporary errors)
Exclusions
Never store:
- secrets, tokens, credentials, private personal data
- one-off task instructions
- transient details (branch names, commit hashes, temporary errors)
Incremental Index Format
{
"version": 1,
"transcripts": {
"/abs/path/to/file.jsonl": {
"mtimeMs": 1730000000000,
"lastProcessedAt": "2026-02-18T12:00:00.000Z"
}
}
}