portfolio-sync
Skill0 starsChanged 8 days agoMITView on GitHub
Sync the current project into a central project-portfolio Markdown archive — a comprehensive log of every project the user has worked on (stack, role, scope). Path-agnostic: the user picks where the archive lives, the skill remembers it. Gathers project signals (git log, manifests, README, structure), matches existing entries by folder name, proposes add/amend for user confirmation before writing. Use when user asks to update their portfolio, log a project, sync the archive, document the current project, or runs /portfolio-sync. Distinct from cv-craft (which produces actual CVs from this archive as source).
In this repository31 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ai-estimateSkill
- aso-craftSkill
- audit-reportSkill
- babysit-prsSkill
- blueprintSkill
- brag-docSkill
- business-briefSkill
- cagan-checkSkill
- code-craftSkill
- commit-reportSkill
- compassSkill
- cv-craftSkill
- dev-flowSkill
- grill-meSkill
- implementation-reviewSkill
- llm-wikiSkill
- parallel-worktreesSkill
- periscopeSkill
- pr-craftSkill
- problem-solvingSkill
- publish-skillSkill
- review-passSkill
- security-auditSkill
- semverSkill
- sentinelSkill
- seoSkill
- testing-philosophySkill
- to-prdSkill
- write-a-skillSkill
- wstg-security-testingSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
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
- Distinctive: line 9
Update the user's central project-portfolio Markdown archive with the state of the project in the current working directory.
- Distinctive: line 14
Read the portfolio file and gather project signals (git log, manifest, README).
- Distinctive: line 23
If found, use the path directly.
- Distinctive: line 26
After the user answers, save a memory reference entry so future runs do not re-prompt.
- Distinctive: line 37
If the portfolio file does not exist at the resolved path, ask the user whether to create it (with the structure documented in …
- Very specific: line 50
If pwd is inside a monorepo (child of folder with own package.json/Cargo.toml), ask user whether they mean inner package or outer repo.
- Very specific: line 79
Wait for explicit confirmation.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
portfolio-sync
Update the user's central project-portfolio Markdown archive with the state of the project in the current working directory.
Quick start
- Resolve the portfolio file path (see Path resolution below).
- Read the portfolio file and gather project signals (git log, manifest, README).
- Match the project against existing entries by folder name.
- Show diff-style preview + rationale, wait for confirmation, then
Edit.
Path resolution
The skill is path-agnostic. Resolve in this order before any read or write:
- Check memory for a
reference-type entry naming the user's portfolio file (look for an entry withportfolio-syncorportfolio filein its name/description). - If found, use the path directly.
- If not in memory, ask the user:
"Where is your project-portfolio archive? (paste an absolute path to the
.mdfile, or to the folder it should live in — I'll create it if missing.)" - After the user answers, save a memory reference entry so future runs do not re-prompt. Format:
And add a one-line pointer to--- name: portfolio-sync file description: Where portfolio-sync stores the user's project-portfolio archive type: reference --- Portfolio file: `<absolute-path>.md`MEMORY.md. - If the portfolio file does not exist at the resolved path, ask the user whether to create it (with the structure documented in REFERENCE.md) — do not create silently.
Constants
- Project root:
pwdunless the user names a different folder.
Flow
Four phases. Do not skip confirmation.
1. Identify the project
- Resolve project name from basename of
pwd. - If
pwdis inside a monorepo (child of folder with ownpackage.json/Cargo.toml), ask user whether they mean inner package or outer repo.
2. Gather signals (in parallel)
git log --oneline -30— recent commit subjects. Skip if not git repo.- Primary manifest if present:
package.json,Cargo.toml,pyproject.toml,go.mod,pubspec.yaml,Gemfile. README.mdif present (first ~80 lines).- Top-level dir + one level of
src/(or equivalent).
Skip node_modules, target, dist, .next, build, vendor, __pycache__, lockfiles.
3. Match against the portfolio
Read the resolved portfolio file in full. Match by folder name against existing entries (e.g. folder v0-acme-portal → entry **v0-AcmePortal**, casing only; folder bluebird-app → ### skylark.io (Bluebird App), where the product was renamed after the repo was). Expect renames: match on loose similarity, confirm with user before treating as the same entry.
Three outcomes:
- Existing entry found → prepare amended version, preserving section, tone, bullet style. Only change lines where state moved.
- No match, but project belongs in existing section (Professional / Client / Side Projects) → propose new entry there.
- Ambiguous → ask user where it belongs before drafting.
4. Propose, then write
Show user before editing:
- Which entry matched (or "new entry in Side Projects").
- Diff-style preview: current bullet(s) and proposed replacement, or new entry block.
- One-line rationale per change ("added because commit
abc123introduced X").
Wait for explicit confirmation. Apply with Edit (preferred) or Write only for full rewrite. Confirm change in one sentence — do not re-print the full file.
Writing rules + after-write checks
See REFERENCE.md for writing style, what to include, Technical Skills table updates, and after-write verification.
Humanize the written prose (if available)
Before writing generated prose to a file, if the humanizer skill is installed, run it on the drafted text so the created document reads naturally and free of AI tells; skip silently if it is not available. Apply it to the human-facing document body only, never to code, frontmatter, file paths, IDs, or literal templates.
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.

