Add a new bashdep:: lifecycle command with TDD
Scanned 9/9/2026
Install to Claude Code
npx -y skills add Chemaclass/bashdep --skill add-command --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Add Command?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/chemaclass-add-command)More formats (shields.io, HTML) on the badges page.
---
name: add-command
description: Add a new bashdep:: lifecycle command with TDD
allowed-tools: Read, Edit, Write, Bash, Grep, Glob
---
# Add Command Skill
Add a new public `bashdep::` lifecycle command (sibling of `install`,
`uninstall`, `clean`, `doctor`, `list`, `self_update`) following strict TDD.
## Prerequisites
1. **Task file** — create `.tasks/YYYY-MM-DD-add-<command>.md`
2. **Read the existing commands** — `bashdep` is a single file; scan how
`bashdep::clean`, `bashdep::doctor`, `bashdep::uninstall` are
structured to match style
3. **Read the API doc** — `docs/api.md` defines the public contract; the
new command's signature must fit the same shape
## Workflow
### 1. Plan
Decide with the user:
- Command name (`bashdep::<verb>`)
- Arguments (positional vs `key=value` like `bashdep::setup`)
- Mutating? If yes, must honor `BASHDEP_DRY_RUN`, `BASHDEP_SILENT`,
`BASHDEP_VERBOSE`, `BASHDEP_FORCE`
- Lockfile interaction (read / write / both / none)
- Exit codes (0 success, 1 validation/IO failure)
- Logging surface (`bashdep::_log` / `bashdep::_vlog`)
Document acceptance criteria + test inventory in the task file.
### 2. Study Existing Patterns
Read the closest sibling command in `bashdep` and its tests in
`tests/unit/bashdep_test.sh`. Reuse helpers: `bashdep::_classify_dep`,
`bashdep::_lock_get`, `bashdep::_lock_remove`, `bashdep::is_dry_run`.
### 3. TDD Cycles
For each test in the inventory, follow RED → GREEN → REFACTOR:
1. **Happy path** — pure-logic test if possible (no filesystem)
2. **Filesystem path** — use `$TEST_DIR` + `_seed_*` helpers
3. **Mode coverage** — one test each for `dry-run`, `silent`, `verbose`,
`force` if the command is mutating
4. **Failure modes** — bad arguments, missing lockfile, IO error
5. **Snapshot test** for any new user-visible output
### 4. Integration
- Add the public function near the bottom of `bashdep` (after the
existing public commands, before any trailing CLI dispatch)
- Add a CLI dispatch case if `bashdep` is invoked as an executable for
this command
- Run full suite: `make test`
- Quality gate: `make pre_commit/run`
### 5. Documentation
- Add the function to `docs/api.md` with usage, arguments, return codes,
and a worked example
- Update `docs/behavior.md` if the command introduces new lockfile or
filesystem semantics
- Update `CHANGELOG.md` `## Unreleased` under `### Added`
- Update the public-API table in `.claude/CLAUDE.md`
- Update `README.md` Quick Start if the command is part of the typical
workflow
## Final Checklist
- [ ] All tests passing (happy path, failure modes, mode flags, snapshot)
- [ ] Function namespaced `bashdep::` and documented in `docs/api.md`
- [ ] Mutating? Modes honored (`dry-run` / `silent` / `verbose` / `force`)
- [ ] Quality gate passes (`make pre_commit/run`)
- [ ] Bash 3.2+ compatible
- [ ] `CHANGELOG.md` updated
- [ ] Task file completed
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!