From vibe-taker
List bundles on the cross-repo shelf with one-line summaries. Supports --search (case-insensitive substring across name/summary/tags/source-repo/language) and --sort name|lang. Flags near-duplicates so the shelf doesn't sprawl.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vibe-taker:listThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Implements [`spec.md > List Flow Architecture`](../../docs/spec.md#list-flow-architecture) and [`prd.md > Epic: Library management`](../../docs/prd.md#epic-library-management).
Implements
spec.md > List Flow Architectureandprd.md > Epic: Library management.
Read-only. No writes. Reads ~/.vibe-taker/library/index.json, formats stdout. Lowest-risk command in the trio; the discovery surface for :plant.
skills/guide/SKILL.md — voice, hygiene, references catalog.skills/guide/references/bundle-schema.md — what index.json looks like.skills/guide/references/error-contract.md — class-0/2 outcome shapes (no class-1 from :list).Then execute the phases below in order.
Form: /vibe-taker:list [--search <query>] [--sort name|lang].
--search <query> — case-insensitive substring across name, summary, tags, source-repo, language. <query> is one token (or quote-delimited).--sort name — alphabetical by name.--sort lang — group by language, then alphabetical within group.captured_at of latest_version descending (most-recently-captured first).Reject any other flags in v1:
[exit 1] Unknown flag `<flag>`. v1 supports: [--search <query>] [--sort name|lang]
Read ~/.vibe-taker/library/index.json.
If absent → exit class-0 (empty library is success, not failure):
Library is empty. Run `/vibe-taker:capture <path>` to add your first bundle.
If unparseable JSON → exit class-2:
[exit 2] Library index missing or corrupt at ~/.vibe-taker/library/index.json. Re-capture a feature to rebuild, or restore from backup.
Validate against skills/guide/schemas/index.schema.json. On schema failure, exit class-2 with the schema error.
If bundles is an empty array (valid index but no entries), print the same empty-library message as the absent-file case and exit class-0.
When --search <query> is passed, filter bundles[] to those matching the query (case-insensitive substring) in any of:
namesummarytags (any tag matches)source_repo of the bundle's latest version (versions[-1].source_repo)languageIf the filtered set is empty, exit class-0 with:
no matches
When --search is absent, the working set is the full bundles[].
Apply the sort flag (or default).
captured_at desc) — for each bundle, compute latest_captured_at from the entry whose version matches latest_version. Sort descending by that timestamp.--sort=name — alphabetical by bundles[i].name. Tiebreaker: latest_captured_at descending.--sort=lang — primary key language ascending; secondary key name ascending.Sort is stable: same comparison key → same ordering as input.
Resolves OQ-2 default. KTD: 70% threshold; tunable post-ship without schema change.
For every pair of bundles in the working set (after filter, before sort — pair set is the same regardless of sort order), compute Jaccard token similarity over summary strings:
Tokenize each summary:
[^a-z0-9]+).the, a, an, and, or, but, with, for, of, in, on, at, to, from, by, is, are, was, were, be, been, being, has, have, had, this, that, these, those, it, its.Compute Jaccard similarity between every pair:
J(A, B) = |A ∩ B| / |A ∪ B|
(When the union is empty — both summaries were stop-word-only — the pair is skipped, similarity treated as 0.)
If J(A, B) ≥ 0.70, mark both bundles in the pair: append [similar to: <other-name>] to each one's listing block. A bundle similar to multiple others gets multiple [similar to: …] markers.
Best-effort, runs at :list time only — never at :capture time. PRD Library-management story 3 is explicit on this.
For each bundle in the (filtered + sorted) set, print one block:
<name> (<latest_version>) <language> · <framework or "no framework"> <captured_at as YYYY-MM-DD>
<summary>
tags: <comma-separated tags> [similar to: <other-name>]
Spacing rules:
…).YYYY-MM-DD form (strip the time component from the ISO timestamp).[similar to: ...] marker(s) appear inline at the end of the tags: line, one space-separated per pair.tags is empty, omit the tags: line.v1, that's already shown in (<latest_version>) — no extra annotation needed.When --sort=lang, prefix each language group with a one-line section header:
=== python (3) ===
Where (3) is the count in that language group. No header for default sort or --sort=name.
After all blocks, print one summary line:
<count> bundle(s)<sort-clause><filter-clause>
Where:
<sort-clause> is , sorted by <name|lang|captured_at desc>.<filter-clause> is , filtered by --search '<query>' when search was applied; otherwise empty.Example: 5 bundles, sorted by captured_at desc, filtered by --search 'image'.
Class-0 in all success branches:
--search no matches → class-0 with no matches.Class-2 only on:
There is no class-1 outcome for :list in v1 — the library being empty isn't a "decline," it's a clean state.
Library is empty. Run `/vibe-taker:capture <path>` to add your first bundle.
bg-remover (v2) python · cli-argparse 2026-05-07
AI-powered CLI background remover. Takes an image path, returns transparent-bg version.
tags: cli, image, ai
1 bundle, sorted by captured_at desc
bg-remover (v1) python · cli-argparse 2026-05-07
AI-powered CLI background remover. Takes an image path, returns transparent-bg version.
tags: cli, image, ai [similar to: bg-remove-tool]
bg-remove-tool (v1) python · cli-typer 2026-05-08
AI-driven CLI tool to remove image backgrounds. Returns a transparent PNG.
tags: cli, image, ai [similar to: bg-remover]
2 bundles, sorted by captured_at desc
no matches
--sort=lang=== python (2) ===
bg-remover (v1) python · cli-argparse 2026-05-07
AI-powered CLI background remover.
tags: cli, image
config-loader (v1) python · none 2026-04-22
Loads YAML config with environment overlays.
tags: config, yaml
=== typescript (1) ===
slack-relay (v1) typescript · express 2026-04-15
Relay incoming Slack events to a webhook with HMAC validation.
tags: slack, webhook
3 bundles, sorted by lang
The dedup-hint computation is best-effort. If a malformed bundle entry breaks tokenization mid-flight, skip that pair and continue; never bring down the listing for a hint feature.
npx claudepluginhub estevanhernandez-stack-ed/vibe-taker --plugin vibe-takerProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.