Skip to content

Commit 03037f3

Browse files
waynemsmithclaude
andcommitted
Add CS skill overlay (keeps upstream SKILL.md pristine)
skills/fizzy/SKILL.md stays byte-identical to upstream so it never conflicts on merge. CS-specific Fizzy guidance (board structure, archiving, restricted-board access, tag IDs) lives in skills/fizzy/OVERLAY.md and is appended onto the installed skill by scripts/install-skill.sh — so agents get it in every project without diverging the upstream file. Additive files only; no merge conflicts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 3991e2d commit 03037f3

2 files changed

Lines changed: 91 additions & 0 deletions

File tree

scripts/install-skill.sh

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Install the Fizzy skill, then append the CS fork overlay.
4+
#
5+
# Why: we keep skills/fizzy/SKILL.md byte-identical to upstream so it never
6+
# conflicts on merge. Our CS-specific guidance lives in skills/fizzy/OVERLAY.md
7+
# and is appended onto the *installed* skill here, so agents get it in every
8+
# project without diverging the upstream file.
9+
#
10+
# Run after building/installing the binary:
11+
# make build && cp bin/fizzy ~/.local/bin/fizzy && scripts/install-skill.sh
12+
#
13+
set -euo pipefail
14+
15+
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
16+
OVERLAY="$HERE/skills/fizzy/OVERLAY.md"
17+
MARKER="<!-- CS-FIZZY-OVERLAY -->"
18+
19+
[ -f "$OVERLAY" ] || { echo "overlay not found: $OVERLAY" >&2; exit 1; }
20+
21+
# Write the upstream skill (overwrites the installed copy with pristine content).
22+
fizzy skill install >/dev/null
23+
24+
# Resolve the installed skill file (Claude loads it via a symlink).
25+
SKILL_LINK="$HOME/.claude/skills/fizzy/SKILL.md"
26+
SKILL_FILE="$(readlink -f "$SKILL_LINK" 2>/dev/null || echo "$SKILL_LINK")"
27+
[ -f "$SKILL_FILE" ] || { echo "installed skill not found: $SKILL_FILE" >&2; exit 1; }
28+
29+
# fizzy skill install just overwrote it, so the marker is gone — append once.
30+
if grep -qF "$MARKER" "$SKILL_FILE"; then
31+
echo "overlay already present in $SKILL_FILE"
32+
else
33+
printf '\n' >> "$SKILL_FILE"
34+
cat "$OVERLAY" >> "$SKILL_FILE"
35+
echo "overlay appended to $SKILL_FILE"
36+
fi

skills/fizzy/OVERLAY.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<!-- CS-FIZZY-OVERLAY -->
2+
3+
---
4+
5+
# Concurrent-Systems — Fizzy conventions (fork overlay)
6+
7+
> Appended to the upstream skill by `scripts/install-skill.sh`. Upstream
8+
> `SKILL.md` stays byte-identical so it never conflicts on merge; iterate CS
9+
> guidance here.
10+
11+
## Board structure — where work lives
12+
13+
- **Team boards = execution.** Work chunks live on the team board that has the
14+
capacity to finish them (Ops, Dev, Finance, LT). One owner per card. This is
15+
where WIP is real — don't spread executable work onto other boards or it gets
16+
lost.
17+
- **`🎯 Projects` = initiatives.** One card per multi-week initiative (outcome +
18+
one accountable owner), columns `Maybe? → On Deck → Active → Done`. The
19+
initiative card is the **hub**; its chunks live on team boards and mention the
20+
project by name + link in their description. Keep the Active set small.
21+
- **Pipeline boards only for standing flows** a dedicated crew owns end-to-end
22+
(Incidents, Leads). They *track* the flow and hand execution cards to team
23+
boards; they don't hold the work. Don't model low-volume things (a one-off
24+
incident) as pipelines — that's ceremony; just make the work chunks.
25+
26+
## Archiving done cards
27+
28+
- `fizzy card move <n> --to <board>` **preserves closed/Done state** (the GUI
29+
can't — it forces a reopen). So the CLI is the bulk-archive tool.
30+
- CS keeps a `🗄️ Archive-<Board>` board per board. Sweep done cards with a loop:
31+
`for n in $(fizzy card list --board <SRC> --indexed-by closed --all --jq '.data[].number'); do fizzy card move "$n" --to <ARCHIVE>; done`
32+
- **Restricted boards:** `fizzy board create` is ALWAYS all-access (the
33+
`--all_access false` flag is ignored) and the CLI has **no grant/revoke** for
34+
per-user access. So for a sensitive board (e.g. LT), a human must lock access
35+
in the **GUI** first; verify with `fizzy board accesses --board <id>` that the
36+
archive's access matches the source **before** moving cards in, or restricted
37+
cards leak.
38+
39+
## Tags
40+
41+
- Get a tag's **ID** (needed for `--tag`) from `fizzy tag list --all` — it
42+
paginates, so `--all` is required; each tag object also has a `url` that is the
43+
GUI cross-board rollup link.
44+
- `fizzy card list --tag <ID>` is **cross-board by default** (no `board_ids`
45+
injection); pass `--board` only to scope to one board. (Upstream fix in
46+
basecamp/fizzy-cli#181; carried locally until merged.)
47+
- Don't mint a tag per initiative unless you'll retire it — there's no
48+
`tag delete`; a tag disappears only when removed from every card.
49+
50+
## This fork
51+
52+
`~/g/fizzy-cli-fork` tracks `upstream/master` (basecamp/fizzy-cli) and builds the
53+
latest v4 (not on Homebrew yet). Carries only: the #181 cross-board fix (pending
54+
upstream) and this skill overlay. Update: `git pull && make build && cp bin/fizzy
55+
~/.local/bin/fizzy && scripts/install-skill.sh`.

0 commit comments

Comments
 (0)