Install
$ agentstack add skill-vladislavsournine-vladyslav-skills-attach-project ✓ 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
Attach Project
Type: Engineer (light)
Overview
Add Claude Code structure to an existing project. Never overwrites existing files. Auto-detects stacks via scripts/detect-stack.sh. The bash scaffolder (scripts/attach-project.sh) does all the work in ~0.5 seconds.
This was a Heavy Engineer skill until v3.1.0. Like init-project v3.0.0, the dispatched Sonnet subagent was doing pure mechanics (mkdir, cp, sed) — no LLM thinking needed for any of it.
Process
Step 0: Pre-flight (Opus main)
Collect inputs that the scaffolder can't auto-detect.
- Verify project root. Run
ls -A. The scaffolder will reject the run if no project markers exist, so this is a pre-emptive sanity check. If pwd looks empty (no.git/, no language manifest likepackage.json/requirements.txt/ etc.) → STOP and suggest/vladyslav:init-projectfor a new project.
- Run stack detection for the user's information:
``bash /scripts/detect-stack.sh . ``
Parse the JSON to show the user what was detected. Example: "Detected: python, docker". This is informational — the scaffolder runs detection again internally.
- AskUserQuestion — additional stacks not auto-detected (multi-select):
> "Detected stacks: `. Want to add any stacks not detected?" > Options: python, go, flutter, swift, kotlin, other, none`.
- For each "other" stack — AskUserQuestion three times:
label(e.g. "Rust backend")dir(e.g.rust)gitignoreentries (comma-separated, e.g.target/,Cargo.lock)
- AskUserQuestion — domain (free text, optional):
> "Project domain / purpose? (e.g. 'iOS fitness app', 'Python data pipeline') — type none to skip"
- AskUserQuestion — private mode (single-select):
> "Private mode? Gitignore AI workflow files (CLAUDE.md, .claude/, docs/plans/)?" > Options: yes, no.
- Resolve plugin root. Same approach as
init-project: Glob~/.claude/plugins/cache/vladyslav-marketplace/vladyslav/*/scripts/attach-project.shand take the directory two levels up. Fall back to/Volumes/DevSSD/Development/vladyslav-skills(dev clone).
Step 1: Run the scaffolder
Execute (via the Bash tool):
/scripts/attach-project.sh \
--pwd \
--plugin-root \
[--additional-stacks "python,go,..."] \
[--other-stacks "label1:dir1:gitignore-entries1;label2:dir2:gitignore-entries2"] \
--domain "" \
--private-mode
--other-stacks format: semicolon-separated list of label:dir:gitignore triples. The gitignore part is itself a comma-separated list. Pass empty string "" if no "other" stacks were chosen.
The script emits JSON:
{
"status": "success" | "error",
"detected_stacks": [],
"files_written": [],
"files_skipped": [],
"warnings": [],
"error": ""
}
Capture this output.
Step 2: Present summary
Parse the JSON. Render to the user:
status: success:
✓ attach-project complete
Detected:
Files written: —
Files preserved (already existed): —
Warnings:
Next: /vladyslav:ingest — scan codebase, populate docs/, and seed MemPalace
status: error:
✗ attach-project failed
Error:
What the scaffolder does (auditing reference)
The bash scaffolder, given the parameters above, writes ONLY these paths if they do not already exist:
CLAUDE.md— with auto-generated Stack section based on detected + additional stacks.gitignore— APPENDED with stack-specific entries (Python / Go / Flutter / Swift / Kotlin / Node / Web), editors/OS, secrets/env, logs, and (if private mode) AI workflow file lines. Existing entries are preserved verbatim, duplicates are skipped viagrep -Fxq..claude/settings.json— withPROJECT_DOCS_ROOTenv.claude/agents/docs-agent.md— documentation maintainer.claude/agents/code-review-agent.md— code-review agentdocs/architecture/system.md,docs/product/prd.md,docs/plans/tasks.md— stub files (# Title\n\n*to be filled*\n)- Per detected/added stack: a placeholder directory (
python/,go/,swift/,flutter/,kotlin/) with.gitkeep— but ONLY if no matching directory (or sibling likebackend/,app/,ios/,android/) already exists. - Per "other" stack: the user-specified
/with.gitkeep.
Idempotent: rerun is safe. Every pre-existing file is reported in files_skipped. No file is ever overwritten.
No git init: the project already has version control. The scaffolder doesn't touch git.
No backend scaffolding: unlike init-project, this skill does NOT create requirements.txt, FastAPI main.py, Dockerfile, docker-compose files, etc. Those would conflict with the existing project. attach-project adds only the AI workflow shell.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: VladislavSournine
- Source: VladislavSournine/vladyslav-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.