Install
$ agentstack add skill-assertchris-claude-skills-custom-workflow-new-feature ✓ 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
New Feature
Step 1: Get purpose
Check $ARGUMENTS for a brief: key.
- If
brief:is present in ARGUMENTS: use everything afterbrief:as the raw purpose. SkipAskUserQuestionentirely. - If
brief:is absent: callAskUserQuestiondirectly and immediately — do NOT write the question as text first. Ask:
> "What is this feature for? (keep it short — a few words)"
Provide 3 example options:
"add user auth"— describes an authentication feature"export to CSV"— describes a data export feature"fix sidebar layout"— describes a UI bug fix
The user will type their own answer via the Other field.
Also check $ARGUMENTS for a project: key. If present, use its value as the project hint. Otherwise the project hint is empty.
If the purpose is empty after sanitisation (step 2), ask again.
Step 2: Sanitise into a slug
Transform the raw purpose into a slug:
- Lowercase all characters
- Replace spaces with hyphens
- Strip any character that is not
a-z,0-9, or- - Collapse multiple consecutive hyphens into one
- Trim leading and trailing hyphens
- Truncate to 40 characters max, cutting at the last
-boundary (do not cut mid-word)
Step 3: Determine next branch number
Resolve the project directory for the feature count:
- If the project hint is non-empty and
/features/exists: use that as the feature directory. - If the project hint is non-empty but that path doesn't exist: derive the basename and search the projects root:
``bash PROJECTS_DIR=$(dirname $(git rev-parse --show-toplevel 2>/dev/null || echo "$PWD")) find "$PROJECTS_DIR" -maxdepth 1 -type d -name "" 2>/dev/null | head -1 ``
- If the project hint is empty: use the current directory.
Then run:
ls /features/ | grep -oE '^[0-9]+' | sort -n | tail -1
Increment by 1 and zero-pad to 3 digits (e.g. 77 → 078). If no output, use 001.
The branch name is feature/-.
Step 4: Check for feature doc template
Run:
git -C show HEAD:features/template.md > /dev/null 2>&1
- If it succeeds: the template is committed to the repo. No extra copy needed.
- If it fails: no committed template exists. Call
AskUserQuestiondirectly and immediately — do NOT write the question as text first. Ask:
> "No features/template.md found in this project. Which template should I copy into the worktree?"
Offer these options:
friday.assertchris.dev—/home/friday/Code/friday.assertchris.dev/features/template.mdfloaty.dev—/home/friday/Code/floaty.dev/features/template.mdgepetto.assertchris.dev—/home/friday/Code/gepetto.assertchris.dev/features/template.mdshell.assertchris.dev—/home/friday/Code/shell.assertchris.dev/features/template.md
The user may also type a custom path via Other. Remember this path — before creating the feature doc, copy the template file to {worktree}/features/template.md (create the features/ directory if needed).
Step 5: Pull main before creating the worktree
Before creating the worktree, ensure the project's main branch is up to date. Run in the resolved project directory:
git -C pull origin $(git -C rev-parse --abbrev-ref HEAD)
If the pull fails (e.g. no remote, offline), warn Chris but continue — do not abort.
Step 6: Create worktree and feature doc
Create a worktree for the branch in the resolved project using the fridayworktreecreate MCP tool. NEVER run git commands manually — the MCP tool handles branch creation inside the worktree so the main project directory always stays on main. Do NOT run git checkout, git branch, or any other git command in the main project directory — it must remain on main throughout.
The worktree will be placed at /.worktrees/.
Once the worktree exists, copy dependency directories from the main project into the worktree so tools like prettier, tsc, etc. are immediately available without a fresh install. Use cp -r (not symlinks) so changes inside the worktree never bleed back. For each of the following directories, if it exists in the main project, copy it into the worktree: node_modules, vendor.
If a template needed to be copied from another project (step 4), do that now.
Using the worktree's absolute path, create the feature doc file inside the worktree (do not commit it).
Step 7: Done
Report:
> Worktree ready at: /.worktrees/ > > To work in this worktree from Claude Code CLI, exit this session and run: > `` > cd /.worktrees/ > claude > ``
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: assertchris
- Source: assertchris/claude-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.