Skip to content
Back to skills

Waffle Install

ASecurity

Install wafflestack stacks or individual items into this repo — persists the refs to `.waffle/waffle.yaml`, then re-renders. Use to add a stack (e.g. github-workflow) or an item (skills/issue).

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentsbashgitsecurity

Works with

  • cli

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add dustinkeeton/wafflestack --skill waffle-install --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Waffle Install?

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

Security grade badge for Waffle Install
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dustinkeeton-waffle-install/badge)](https://www.skillsdirectory.com/skills/dustinkeeton-waffle-install)

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: waffle-install
description: Install wafflestack stacks or individual items into this repo — persists the refs to `.waffle/waffle.yaml`, then re-renders. Use to add a stack (e.g. github-workflow) or an item (skills/issue).
user-invocable: true
argument-hint: "<ref…> e.g. github-workflow skills/issue files/.github/workflows/waffle-doctor.yml (bare = re-render only; --force overrides the overwrite guard; --gitignore adds recommended entries)"
---

# Install a stack or item

Wraps `wafflestack install <ref…>` — it **resolves** each ref, **persists** it to
`.waffle/waffle.yaml` (a stack name → `stacks:`; an item ref → `include:`, stack-qualified only
when ambiguous), then runs a full render. Persisting is required, not cosmetic: the
frozen-image contract deletes any locked file the next render doesn't reproduce, so an
un-persisted ad-hoc install would be silently removed. A **bare** `install` (no refs) is just a
re-render of the current selection.

## Resolve `$ARGUMENTS`

Treat `$ARGUMENTS` as a space-separated list of **refs** plus optional flags:

| Ref form | Example | Meaning |
|----------|---------|---------|
| stack name | `github-workflow` | adopt a whole stack |
| item | `skills/issue`, `agents/docs-agent`, `files/.github/workflows/waffle-doctor.yml` | one item + its dependency closure |
| stack-qualified item | `engineering-team/skills/webapp-security-audit` | disambiguates a name defined in more than one stack |

Flags to pass through when asked: `--force` (overwrite an unmanaged file collision) and
`--gitignore` (append recommended entries after a clean render). If the user names a stack or
item you are unsure of, run **`/waffle-setup`** first to confirm the exact ref.

## Run it

```bash
npx --yes github:dustinkeeton/wafflestack install <refs…> [--force] [--gitignore]
```

## Interpret the result

- **Report what was pulled in.** Installing an item drags its **dependency closure**
  (an agent's `skills:` and any `requires:`) transitively across stacks — the CLI prints the
  added refs. Name them so the user isn't surprised by extra rendered files.
- **Report the render.** Relay the `rendered N files` / `removed stale: …` lines.
- **Missing config.** If the render fails demanding a required key
  (`config.<stack>.<key>`), add it to `.waffle/waffle.yaml` `config:` (or the gitignored
  `.waffle/waffle.local.yaml` for account-specific values) and re-run.
- **Unmanaged-file collision.** If it refuses to overwrite a pre-existing, unmanaged file,
  do **not** blindly `--force` (that discards their file). Explain the collision, offer to move
  the file aside or fold it into a `.waffle/extensions/` file, and only `--force` once the user
  agrees the toolkit's version should own that path.
- **Un-eject.** Installing a ref that sits in `eject:` **un-ejects** it — the CLI prints
  `un-ejecting <ref>` and wafflestack manages the item again. The file on disk is the user's
  project-owned copy, so if it differs from the render the install is **refused**: the CLI
  restores `.waffle/waffle.yaml`, the item stays ejected, and nothing was written. Treat that
  exactly like the collision above — their edits are what `--force` would discard.

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…