Skip to content
Back to skills

Add Command

ASecurity

Add a new bashdep:: lifecycle command with TDD

  • 19 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 9, 2026
toolsbashapidocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add Chemaclass/bashdep --skill add-command --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Add Command?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Add Command
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chemaclass-add-command/badge)](https://www.skillsdirectory.com/skills/chemaclass-add-command)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…