raoofaltaher/ultrapowers/team-memory
- community
Checking that the SKILL.md file is still in the repository.
Use when you learn a verified, durable, expensive-to-rediscover, non-derivable fact about this project; when you need to know whether the team already hit a problem or why a past decision was made; or when asked to prune or lint the team memory store
Install
npx vskill@latest install raoofaltaher/ultrapowers/team-memorySKILL.md
Team Memory
Overview
Git-native shared memory for every coding agent on the project. The store is .agents/memory/ at the project root, a fixed path that no config key moves; from a nested clone it is ../.agents/memory/. MEMORY.md is the index, hard budget memory.indexBudget lines (default 150). Entries are one fact per file under gotchas/, decisions/, subsystems/. Four modes: remember, recall, prune, lint. Say which mode you are in before acting.
remember: save a learning
- Gate. ALL four must hold, else do not save and tell your human partner which one failed:
- Verified: tested or directly observed in this project, not inferred.
- Durable: still true next month (no sprint status, no in-flight branch state).
- Expensive: would cost a teammate
memory.rediscoveryMinutes(default 15) or more to rediscover. - Not derivable: not already stated in code, docs, specs, or git history.
Never store: secrets, tokens, credentials, URLs embedding auth, personal data, customer data. If the candidate text contains any of these, stop. Do not save a redacted version until the fact stands without the secret; describe where a credential lives, never its value.
- Check the index for an existing entry on the topic. If one exists, update that file, refresh its
date, and fold the change into its index line as**UPDATED YYYY-MM-DD: ...**. Do not add a near-duplicate. - Distill: strip session narrative, generalize to the reusable rule, one fact only. Ask: "what would I tell a teammate in three sentences?"
- Write
<dir>/<name>.mdwith this exact frontmatter;nameequals the file name without.md:
```markdown
name: <kebab-case-slug> description: <one line: what this entry tells you> metadata: type: <gotcha | decision | subsystem> date: <today, YYYY-MM-DD>
<the fact, one to three sentences>
Why: <root cause or rationale>
How to apply: <what to do differently> ```
Optional [[name]] links point at other entries.
- Add one index line under the matching heading:
- [<name as title>](<dir>/<name>.md) — <one-line hook> (<YYYY-MM>). - Budget check: count the lines of
MEMORY.md. If adding the line would exceed the budget, STOP. Do not write the line. Run prune, then retry. - Run lint on the store and fix every finding.
- Commit on the current branch with the trailer
<memory.trailer>: <dir>/<name>.md(defaultMemory-Ref). The entry is reviewed in the same change request as the work that produced it.
Promotion from personal memory: a personal auto-memory file that passes the gate is copied into the matching folder with name and description kept, its metadata reduced to type (gotcha, decision or subsystem; a personal layer's own types and extra keys fail the lint) and date added. It gets its index line and goes through steps 6 to 8. Never promote a memory about a person (a user-type memory).
recall: find prior knowledge (the ladder, in order)
MEMORY.md: scan the one-liners.- Grep the store: names, descriptions, bodies.
- Git history:
git log --grep="<topic>" --onelineandgit log -S"<symbol>" --onelineat the project root, then once per entry inreposof.agents/ultrapowers.jsonwithgit -C <repos[].path>. Search the trailer too:git log --grep="Memory-Ref". - The forge or tracker, when tools for it are available in this session: change requests, issues, review threads. Descriptions and review threads hold the "why".
- Personal memory layers, where installed.
- If the answer was hard-won at rung 3 or deeper, write it back with remember. A fact found only by this archaeology passes Not derivable: that criterion rules out what code, docs or specs state outright, not what a commit body buried. Archaeology feeds the corpus.
prune: periodic hygiene
- Run lint first and fix its findings.
- List entries whose
dateis older than six months. Re-verify each against the current codebase; refreshdateand the index line's**UPDATED**note, or delete the file together with its index line. - Merge near-duplicates into one entry; delete the other and its index line.
- Report the index line count against the budget.
- The output is a normal reviewable change on the current branch, committed with the trailer naming each touched entry.
lint: check the store
Run node <this skill's directory>/scripts/memory-lint.mjs <store> (add --budget N to override the configured budget). Exit 0 means clean. Otherwise act on each line <CODE> <path>: <message>:
| Code | Fix | |
|---|---|---|
BUDGET | Run prune. Do not add lines. | |
DANGLING | The index links to a missing file: restore the file or delete the line. | |
ORPHAN | An entry has no index line: add one under the right heading, or delete the entry if it fails the gate. | |
STRAY | A file or folder at the store root other than README.md, MEMORY.md and the three folders: rewrite it as a proper entry or delete it. Session summaries are strays. | |
FM_MISSING, FM_KEYS, FM_NAME, FM_TYPE, FM_DATE | Rewrite the frontmatter to the exact schema in remember step 4. | |
WIKILINK | [[name]] names no entry: fix the name or remove the link. | |
NEAR_DUP | Two names differ only by punctuation or a trailing s: merge them. |
Red flags
| Thought | Reality | |
|---|---|---|
| "Useful context for the next person, so it belongs in memory." | Sprint status and in-flight state fail Durable. Put it in the task folder. | |
| "The index is only a little over; one more line is fine." | The budget is a hard stop. Prune first. | |
| "The token is needed to reproduce the bug." | Nothing with a credential enters the store. Name where the credential lives, never its value. | |
| "It's obvious from the code, but a note saves time." | Then it fails Not derivable. Do not save. | |
| "I'll write the index line later." | An orphan entry is invisible. File and line land in the same commit. | |
| "No time for the trailer." | The trailer is how recall reaches this commit. Add it. | |
| "I'm fairly sure this is how it works." | Fairly sure is inferred. Verify it here first, or do not save. |
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/team-memory/SKILL.md
Popularity
- Repository stars
- 1
- 7-day trend score
- 8
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/raoofaltaher/ultrapowers/team-memory)