Install
$ agentstack add skill-alignment-foundry-asm-skills-project-catalog ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Project Catalog Management
Template for managing the user's project catalog at ~/{profile}/projects/.
When to Create vs When to Just Do
- Create a project entry when the user talks about an idea, concept, or new initiative — even at the ⚪ Idea stage. The catalog is a scratchpad for capturing every concept so nothing gets lost.
- Do NOT create project entries for one-off tasks the user asks you to execute (run a command, test a thing, answer a question). Those belong in conversation history.
- Threshold for project-worthy: if the user mentions a concept twice in one session, or if it would take 10+ tool calls to complete, it's a project.
How to Transition an Idea to Active
When the user says "let's go with" or "build this" on an ⚪ Idea:
- Move status to 🟢 Active in both PROGRESS.md frontmatter and CATALOG.md
- Log the transition and add concrete action items to PROGRESS.md
- Build the minimum viable thing immediately — don't scope-creep in the catalog entry
- After building, update the entry with built artifacts (paths, Docker images, URLs)
Core Principles
- When the user mentions a new idea, create the entry immediately — don't wait to be asked twice. The entry is lightweight; it can be updated.
- When creating entries for multiple projects mentioned at once, create ALL files first, then present the board for confirmation. Batch the writes.
- Always confirm statuses with the user — your initial assessment is a draft. the user may correct ⚪ Idea → 🟢 Active (e.g. "we're in alpha"), or you may need to ask. Use the brief summary format at the end to let the user sign off.
- External blockers (waiting on the user) go to 🟡 Paused with clear Action Items for the user listed in the project file. Never leave a blocked project at Active.
Status Definitions
| Status | When to use | |--------|-------------| | 🟢 Active | Being worked on now. Includes projects with working code, running alpha/beta versions. | | 🟡 Paused | Blocked on external input (name, API key, decision). Clear Action Items listed in project file. | | ⚪ Idea | Concept stage. Nothing built yet. | | 🗄 Archived | Completed (shipped, done) or abandoned (no longer pursuing). |
Workflow
Creating a new project entry
- Copy
templates/README.mdandtemplates/PROGRESS.mdinto a new subdirectory (e.g.projects/my-idea-name/) - Fill in: status, created date, description, key locations, tags
- Add to CATALOG.md under the appropriate status section
- Present the full board to the user for confirmation — statuses are drafts until he signs off
Creating entries from multiple ideas at once
- Create ALL project files in parallel (single batch of write_file calls)
- Update CATALOG.md with all entries
- Present a compact table of all projects with statuses
- Let the user correct any statuses in one pass
Updating a project
- Read the project file
- Update status, last activity, add notes/history entry
- Update CATALOG.md if status changed sections
Archiving
- Set status to 🗄 Archived
- Add closing note to PROGRESS.md log with final actions taken
- Move entry to Archived section in CATALOG.md
- If the project produced a reusable script/tool: bundle it into a skill first (copy script into the skill's
scripts/dir, update wrappers) so the cron or downstream consumers still work. Then archive the project.
Handling projects with external blockers
- Create the project file with status 🟡 Paused
- Include a clearly named "Action Items" section listing what the user needs to provide
- Add specific, numbered action items with checkboxes
- In CATALOG.md, place under the 🟡 Paused section
File Structure
~/{profile}/projects/
├── CATALOG.md ← Master index (all projects by status)
├── templates/
│ ├── README.md ← Template: human-readable overview (no frontmatter)
│ └── PROGRESS.md ← Template: YAML frontmatter + append-only log
└── /
├── README.md ← Project overview (human-readable, no frontmatter)
└── PROGRESS.md ← Frontmatter schema per special-projects-manager
NOTE: This skill handles lifecycle management (when to create/update/archive). The file format (frontmatter schema, tag taxonomy, append-only log format) is governed by the special-projects-manager skill, which is canonical. See references/overlap-note.md for details.
GitHub Org Projects (Special Pattern)
When the user asks to set up a GitHub org for collaboration:
⚠️ Fine-Grained PAT Limitation
If the gh token is a fine-grained PAT (github_pat_...), many org-level operations are blocked:
- Cannot accept org invites via API — the user must click the invite link in browser
- Cannot create repos under the org —
Resource not accessible/You need admin access - Cannot transfer repos to the org —
Resource not accessible by personal access token
For org-level operations, fall back to manual repo creation by the user: he creates the repo in the browser, then we push content to it (add as a secondary remote, push).
See references/fine-grained-pat-limitations.md in the efficient-operation skill for full details.
Workflow
- Ask for the org name first → create entry at 🟡 Paused
- Once name is confirmed → check
gh auth statusIMMEDIATELY - If gh is not authed → tell the user a token is needed (link to generate one)
- GitHub orgs CANNOT be created via CLI or API — the user must create via web UI at https://github.com/account/organizations/new?plan=free
- If token is fine-grained: ask the user to click the invite link in browser at
https://github.com/orgs/ORG_NAME/invitation?via_email=1 - Creating repos under the org (preferred path when fine-grained PAT):
- the user creates the repo manually in browser at
github.com/orgs/ORG_NAME/repositories/new— make it private, no README/gitignore/license (we push existing content) - Then push existing content:
git remote add org https://github.com/ORG_NAME/repo-name.git && git push org main
- If classic PAT with sufficient scopes is available:
gh repo create ORG_NAME/repo-name --public --clone- Or use API:
POST /orgs/ORG_NAME/repos
- Set up branch protection, issue templates, and org-level defaults after repos exist
Reference Examples
references/session-example-{private-repo-profile-recon}.md— Full lifecycle of a project from ⚪ Idea → 🟢 Active with built artifact in one session
When to update
- the user says "I want to start X" or has a new idea
- the user mentions a concept twice (it's worth tracking)
- the user asks me to work on something substantial (not one-off tasks)
Status management during active work
When a project transitions from idea → building → delivered:
- Update status immediately when work begins (⚪ Idea → 🟢 Active) — don't wait until completion
- Update status when paused — set 🟡 Paused with a note on what's blocking or pending
- Update Last Activity date on every status change
- Expand the Notes section with progress bullets as work happens (✅ done items, 🔄 pending items)
- Move the CATALOG.md entry to the correct status section immediately
This keeps the catalog accurate in real time, not just at milestone boundaries.
When to update
- After working on a project, log what happened
- Status changes (active ↔ paused ↔ archived)
- New notes or decisions recorded
Pitfalls
- Don't let external blockers stop forward progress. When the user gives a green light to build and you hit a dependency you can't resolve (missing API key, unauthed CLI, uncreated account), don't stop and ask. Build what you can, note the blocker as a separate action item, deliver working output. Flag the blocker at the end. Example: "gh not authed" → build the tool anyway, note "push to org" as a follow-up. the user will tell you when he wants the blocker resolved.
- Don't over-classify statuses. If a project has working code but you haven't deployed it, it's 🟢 Active, not ⚪ Idea. Move to Active when there's code, even if it's alpha/unreleased.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Alignment-Foundry
- Source: Alignment-Foundry/asm-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.