project
Skill156 starsChanged 32 days agoMITView on GitHub
Manage the owner's OWN working repositories (Overleaf LaTeX projects, code repositories) from the vault, on an explicit instruction only: /project link | open | sync | brief | snapshot | status | unlink, or "open my research outline", "commit and push the outline", "link this Overleaf project", "snapshot the paper into the wiki". The clones live OUTSIDE the vault in the project store (the registry page names its folder) or are registered where they already are; the wiki holds only a registry row (wiki/tools/Agent Project Store.md) and commit-pinned snapshots ingested through raw/. Never runs from passive context, IDEAS.md or another skill; never changes the working directory; commits as the owner on the word commit, pushes on the word push, never force.
- Reads credentials
- Deletes or force-pushes
We split this skill into the rules it gives an agent
4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 31 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 30
No persistent
cd: Use git -C <absolute path> … or an absolute file path so commands cannot inherit the wrong directory. - Distinctive: line 34
Commits and pushes: Commit on the word *commit*, or under a standing per-repository policy the owner set on its registry row.
- Distinctive: line 118
Update the registry row's last-sync sha and the project page's source-page link.
- Very specific: line 126
Preview and wait: every branch with unpushed commits (git -C <path> log --branches --not --remotes --oneline), the stash list, untracked …
“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.
Files
project — the owner's working repositories beside the vault
Contract
The permissions below govern this procedure; no procedural step may relax them. The load-bearing rules are:
- Explicit instruction only. A passive mention of a repository (an
@-mention, a selection, IDEAS.md) never triggers a verb. Every verb that clones, removes or writes into the wiki shows a preview first and waits for the owner's go. - Placement. New clones go to
projects/<name>/under the configured store (LLM_WIKI_STORE, default~/.llm-wiki/); an existing working copy outside the vault is registered in place (link --path). A path inside the vault is refused. The sibling store~/.llm-wiki/repos/(studied third-party repositories,repo_pack.py clone) is never used here. - Nothing in a clone is knowledge. The wiki holds the registry row and, per repository, the
source page compiled from a snapshot pack in
raw/; no page describes a repository from its live tree, no page cites a clone path except the registry. - No persistent
cd. Usegit -C <absolute path> …or an absolute file path so commands cannot inherit the wrong directory. - Credentials never in a URL. Each clone carries a git credential helper that reads its token
from
credentials.envunder the configured store (LLM_WIKI_STORE, default~/.llm-wiki/); the remote URL is clean (https://git.overleaf.com/<id>,https://github.com/<owner>/<repo>). - Commits and pushes. Commit on the word commit, or under a standing per-repository policy the
owner set on its registry row; the owner is sole author (git config identity, no AI trailer, an
imperative one-line message); push on the word push; never a force push, never a rewrite of
pushed history, never a branch the instruction did not name. The vault's destructive-git guard
(
checkout,restore,clean,reset --hard) coversgit -Cforms too. - Lanes. A project path reaches a lane only by an explicit grant;
gitstays the head's instrument; an armed hands-off head needs a pre-flight grant for any project path. - Logging.
linkandbriefare logged by theingestthey run (the entry's Changed line names the registry row and the pointer);open,sync, commits, pushes,statusandunlinkchange no knowledge and log nothing.
Registry — wiki/tools/Agent Project Store.md
type: tool, the sibling of Agent Repo Store. It carries the rule of use (read or written only
under this skill on the owner's instruction; never cited; never read into a compile) and one row per
repository:
| name | kind | remotes (role: url) | local path | purpose | project page | channel | commit policy | last sync (date · sha12) | state |
kind:overleaf(LaTeX on Overleaf) ·code·other.channel:overleaf-git(the primary,https://git.overleaf.com/<project-id>) ·github-bridge(the fallback, a clone of Overleaf's GitHub mirror; each push then needs the owner's "Pull GitHub changes into Overleaf" click) ·github(a plain code repository) ·in-place(registered where it is).commit policy:on the word commit(default) or the owner's standing sentence for that row.state:linked·unlinked(the row stays as the recovery record).- The row is the single home of the path and the sha; the research-project page in
wiki/user/gets a## Repositorysection holding two links only, the registry row and the latest snapshot's source page.
Verbs
link <url> [--name n] [--kind overleaf|code] [--overleaf <project-id>] · link --path <dir> [--name n] [--kind …]
- Resolve. Name =
--name, else the repository's basename (an Overleaf project id alone is not a name: ask). Refuse a name already on the registry; refuse a--pathunder the vault root; refuse a URL whose user part carries a password (user:secret@host). - Channel check (URL only).
git ls-remote <clean url>with the helper environment; record the branch list; take the default branch thatls-remotereports. A failure here is reported, never worked around (a missing Overleaf git integration means thegithub-bridgechannel instead). - Preview and wait. One table: source · name · destination path (or the registered path) · remotes with roles · channel · commit policy · the brief selection (files and bytes) · what the ingest will log. WAIT for the owner's go.
- Clone or register.
git clone <clean url> <store>/<name>(full history, the remote's default branch);--path: no clone, verifygit -C <dir> rev-parse --is-inside-work-tree. Then the credential helper (below) and, foroverleaf, a reminder that Overleaf's GitHub-sync feature should be off for that project once direct git is in use. - Registry row on the tool page (create the page from the sibling's shape on the first link) and
the
## Repositorysection on the research-project page. - Brief (below), then report: the row, the branch, the sha, the snapshot's source page.
open <name>
git -C <path> fetch --all --prune.- Report first: branch, ahead/behind per remote, modified, staged and untracked files (names), and
the porcelain line count (
git -C <path> status --porcelain | wc -l) so a "clean" claim carries its number. - Pull
--ff-onlywhen the tree is clean, else wait for the owner's word; a non-fast-forward is reported with both sides and a merge proposed, never forced. - Record the absolute path for the rest of the instruction; every later command names it.
sync <name> [push]
Fetch and pull as in open; report divergence; push only when the instruction says push, then prove
it: git -C <path> ls-remote origin <branch> equals git -C <path> rev-parse HEAD. For an
overleaf repository, compile first where a TeX engine exists (tectonic <main.tex> in a temporary
output directory) and report the result; with no engine, say the build is unchecked.
brief <name>
open (a pull first), then snapshot <name> --brief: the file tree (depth 3), the main document's
head (the .tex that holds \documentclass, its first 200 lines), and a README, abstract or outline
skeleton where one exists — at most 8 files and 32 KiB (caps set by judgement, unmeasured). A single-file
document (one main.tex larger than the per-file cap) has no useful head: its brief is the document itself,
packed whole under --allow-large '<why>' with its bibliography, within the 300 KiB safety bound
(set by judgement, unmeasured for a new workload).
snapshot <name> [paths…] [--brief]
The only way repository content reaches the wiki.
- The tree must be clean for the selection (
repo_pack.pyrefuses a modified tracked file or a selected untracked one; the owner commits first). - Ledger, then pack, then ingest:
python3 .claude/skills/gather/run_ledger.py init --id <project>-<date> --budget 1python3 .claude/skills/gather/repo_pack.py pack-and-write --repo <absolute path> --paths <p1,p2,…> --slice <sha12> --title "<name> snapshot <date> <sha12>" --rationale "<why these files>" --ledger-id <project>-<date>The pack lands in theraw/root;/ingestcompiles it atstandarddepth or above. The ingest's de-dup pre-flight matches an existing source page for the same work and updates it as the new version, never a second page; the sort table's authorship rule sends the pack toraw/9-originals/. Confidencehighby default (the owner's own work), stampedaudited:. - Update the registry row's last-sync sha and the project page's source-page link.
status
One table for every row: branch · ahead/behind per remote · porcelain count · sha on disk vs the row's sha · path present and not a symbolic link. Name every row whose path or sha disagrees with disk; propose the fix, apply on the owner's word.
unlink <name>
- Preview and wait: every branch with unpushed commits (
git -C <path> log --branches --not --remotes --oneline), the stash list, untracked files, ahead/behind per remote. - On the owner's explicit yes the row's state becomes
unlinkedand nothing is removed; the reply names the folder at the row's recorded path. Deleting a project folder is a separate act, done only on the owner's explicit ask, which the agent may propose: the agent shows again what the folder holds (unpushed commits, the stash list, untracked files, and any other working tree that depends on it, fromgit worktree list), and on the owner's yes moves the folder to the system trash (the Bin on macOS), never withrm -rf; a path that is missing or is a symbolic link is reported, not acted on. - The project page keeps its links.
The credential helper
Set once per clone, never a token in the URL; the helper reads the key at use time by grep, never by
sourcing the file (a cookie value with a ; would execute):
git -C <path> config --local credential.helper ''
git -C <path> config --local --add credential.helper '!f() { echo username=git; echo "password=$(grep "^OVERLEAF_GIT_TOKEN=" "${LLM_WIKI_STORE:-$HOME/.llm-wiki}/credentials.env" | cut -d= -f2-)"; }; f'The empty first value resets the clone's helper list so a machine-wide helper does not store
a second copy. The authorised credential file remains the single home.
GitHub remotes use the login gh already holds (gh auth setup-git once per machine if a push
prompts). A token that expires or is revoked fails the push with an authentication error: report,
stop, no retry loop; the owner renews it in Overleaf's Account Settings and updates the credential
file's OVERLEAF_GIT_TOKEN line.
Overleaf specifics
- Endpoint
https://git.overleaf.com/<project-id>; usernamegit; the token as the password. - One branch only, no force push, no branch creation: a branch request on an
overleafrow is refused with the reason. - The GitHub-sync feature and direct git both write the same history; keep one channel per project
(the row names it). Under
overleaf-git, leaving the sync on is harmless lag until the owner clicks.
Controls (CLAUDE.md §11)
- A "clean tree" claim prints its porcelain count; a "pushed" claim prints the remote sha beside HEAD.
statusreads the registry with a parser over the table rows, never a substring count.- A refused command (guard, fence, authentication) is reported as the gap it is, never worked around.
Failure handling
| Failure | Handling |
| Authentication error on pull or push | report and stop; the owner renews the token |
| Non-fast-forward (edits on both sides) | report both sides, propose a merge, never force |
Uncommitted changes at open | reported before any pull; the pull waits for the owner's word |
Dirty tree at snapshot | repo_pack.py refuses with the list; commit first |
A branch requested on an overleaf row | refused with the reason |
| Two rows with one name | link refuses without --name |
--path inside the vault | refused |
| A clone missing on a fresh machine | link re-creates a store clone from its row; an in-place copy is reported absent |
| No TeX engine | the compile check is skipped and the reply says the build is unchecked |
| The registry drifts from disk | status names the rows; fixes on the owner's word |
Report format
Compact: the verb · the repository (name, branch, sha12) · what changed (files, commit, push proof) · what was written into the wiki (row, source page) · every control with its number. UK English.
Other versions39 projects use a version of this.
Word for word · 1
- HurricaHjz/second-yourself★ 105100% same
Edited · 0
None found.
Wrote their own version · 38
- fleetdm/fleet★ 7.1ksame name
- samchon/typia★ 6ksame name
- samchon/nestia★ 2.2ksame name
- cwinvestments/memstack★ 425same name
- AlpacaLabsLLC/skills-for-architects★ 390same name
- Achuan-2/siyuan-plugin-task-note-management★ 226same name
- Soul-Brews-Studio/arra-oracle-skills-cli★ 121same name
- cybaea/obsidian-vault-intelligence★ 79same name
- jantichy/claude★ 45same name
- saksham10arora-dotcom/everything-claude-codex★ 24same name
28 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use next, learn and 8 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.
VercelSkillnext
Next.js renderer for json-render that turns JSON specs into full Next.js applications with routes, layouts, SSR, and metadata. Use when working with @json-render/next, building Next.js apps from JSON specs, or creating AI-generated multi-page applications.
Also in 3 projects that use this
genomewalkerSkilllearn
Learn from web sources, generate SKILL.md, and store key patterns in soul memory. Trigger keywords: learn, skill-gen, web-learn, documentation, tutorial.
Also in 8 projects that use this
Microsoft AzureSkilltest
Also in 6 projects that use this
OpenAISkillaudit
Audit or critique a product flow, journey, workflow, funnel, onboarding path, checkout path, settings path, screen, or multi-step product experience by capturing screenshots first, then reporting UX, design, and accessibility findings inline from that evidence. Use Figma only when the user explicitly asks for a board. Use when the user asks to audit, review, critique, inspect, assess, analyze, evaluate, or give feedback on a product experience.
Also in 5 projects that use this
GoogleSkillteach
Teach the user a new skill or concept, within this workspace.
Also in 4 projects that use this
SentrySkillreview
Fixture review skill.
Also in 5 projects that use this
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
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.

