Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .compiled/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,21 @@
"yesterday"
]
},
{
"name": "create-shareable-skill",
"description": "Turn an existing skill or a fresh idea into a catalog-ready shareable skill -- run the quality gate, decide catalog and standalone-vs-bundle placement, pick the category, scaffold SKILL.md (+ optional .plugin.json), update the catalog docs, and open a PR. Use when adding a new skill to the catalog or promoting a personal skill into a shareable one.",
"source": "./.compiled/skill-plugins/create-shareable-skill",
"author": {
"name": "Yesterday"
},
"keywords": [
"claude-code",
"yesterday",
"skill-authoring",
"meta",
"contributing"
]
},
{
"name": "creative-productivity",
"description": "Generate professional consulting deliverables: Excalidraw diagrams, Mermaid visualizations, Reveal.js/Marp presentations, draw.io architecture diagrams, one-pagers, proposal documents. Orchestrator with enriched assets over the underlying tool plugins.",
Expand Down
24 changes: 24 additions & 0 deletions .ytstack/DECISIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -220,3 +220,27 @@ Plugins that fail either criterion belong elsewhere, not here.
**Chose:** Branch (`add-<slug>`) → atomic commit (`add <slug>`, CONTRIBUTING commit format) → push → `gh pr create --base main` → human signoff → merge. Never self-merge; never commit a new skill directly on `main`.

**Reason:** CI (`compile.yml` + `secret-scan.yml`) re-runs compile + a gitleaks scan on the PR -- that gate only fires on a PR. A new catalog entry changes what installers receive and is hard to walk back once `main` moves, so it needs human review. This matches the existing CONTRIBUTING "PR. CI will re-run compile + audit" guidance and makes it explicit + non-optional.

---

## 2026-05-14: `new-shareable-skill` ships as a standalone catalog skill (supersedes the `.agents/` placement)

**Context:** The prior entry placed `new-shareable-skill` in `.agents/skills/` to avoid naming the private `yesterday-skills` catalog in a published artifact. The user rejected that on review: `new-shareable-skill` is to be a standalone, compiled, marketplace-published skill like any other -- "authoring a shareable skill" is itself a user-facing capability, not just internal tooling.

**Chose:** Standalone skill at `skills/operations/new-shareable-skill/` (+ `.plugin.json`). Compiled by `compile.mjs`, listed in the marketplace (count 14 -> 15). Only `audit-skills` stays in `.agents/` -- it is pure verification machinery with no user-facing capability.

**Reason:** User decision; user instructions outrank an agent's architectural judgement. The leak concern is handled at the content level instead of by hiding the file: the actual username path example was depersonalized, gratuitous pattern tokens were softened. The two catalogs are still named -- that was an explicit requirement ("der die policies dieses und des yesterday-skills repos kennt"), and `yesterday-skills` is not an `-internal`-suffixed repo.

**Known consequence:** `references/quality-bar.md` documents leak patterns (grep commands, `-internal`, migration-framing examples). Now that the skill lives under `skills/` it is in `audit-skills`' scan scope, so axis-1 will surface known false positives from this skill's own pattern documentation -- the same reason `audit-skills` excludes `.agents/`. The clean structural fix, if the noise is unwanted, is to add `skills/operations/new-shareable-skill/references/` to `audit-skills`' `-not -path` exclusions; not done here because it modifies a second skill that was not in scope.

**Supersedes:** "2026-05-14: `new-shareable-skill` lives in `.agents/skills/`, not the marketplace tree". The "meta-skill -> `.agents/`" rule from that entry no longer holds as a blanket rule; `.agents/` is now specifically for non-user-facing verification / build machinery.

---

## 2026-05-14: Renamed `new-shareable-skill` -> `create-shareable-skill`

**Context:** User review of PR #2. The slug `new-shareable-skill` reads as a state ("a skill that is new + shareable") rather than an action; the skill's job is to *create* a shareable skill from an idea or an existing one.

**Chose:** Slug `create-shareable-skill`. Folder `skills/operations/create-shareable-skill/`, `.plugin.json` `name`, SKILL.md frontmatter `name`, the `digraph`, and every cross-reference (README, CONTRIBUTING, AGENTS, `.ytstack/` memory) renamed to match. `compile.mjs` re-run so the marketplace entry + `.compiled/skill-plugins/` symlink dir follow the slug.

**Reason:** Slug = folder name = `.plugin.json` `name` (parity rule). An action-verb slug matches the catalog's other capability skills and is self-explanatory in a `/skills` list. The earlier entries above keep the old name verbatim -- DECISIONS.md is append-only and those record the decisions as they stood at the time.
5 changes: 3 additions & 2 deletions .ytstack/KNOWLEDGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@ Patterns, rules, and lessons learned while building skills. This file is read by
- **No internal-perspective framing in user-facing files.** Phrases like "no Yesterday-infra dependencies", "generic-tauglich", "Yesterday-team needs ...", or "private companion catalog": all describe the catalog from Yesterday's vantage point. External users don't share that vantage. Frame from the user's perspective ("install with X", "requires SaaS account Y") instead. The acceptance criterion lives in DECISIONS.md.
- **`allowCrossMarketplaceDependenciesOn` is a whitelist, not an installer.** It only PERMITS a plugin to depend on another marketplace's plugin. The user must still `/plugin marketplace add` the other marketplace and `/plugin install` the dep manually -- otherwise `/doctor` errors with "Dependency X not installed". Public-catalog bundles should therefore avoid cross-mp deps entirely (see DECISIONS.md "Public bundles avoid install-breaking cross-marketplace deps").
- **Sister repo `yesterday-skills` is kept at parity manually.** Both repos share `compile.mjs` + `clean.mjs` verbatim and both now have `.github/workflows/compile.yml` (sister's added 2026-05-13). When changing the compile pipeline, CI workflow, or OSS scaffold, apply to both. Sister also enforces folder-name === `plugin.json` name parity (its DECISIONS.md, 2026-05-13).
- **`.agents/skills/` is the home for meta-skills about the catalog**, not `skills/`. `compile.mjs` walks only `skills/`, so `.agents/` content is never compiled or published. Use `.agents/` when a skill would otherwise have to leak internal-perspective content to be published -- e.g. `audit-skills` (documents `-internal` patterns) and `new-shareable-skill` (knows the public↔private catalog routing). The leak audit explicitly excludes `.agents/` for this reason. See DECISIONS.md "`new-shareable-skill` lives in `.agents/skills/`".
- **Authoring a new skill: use `.agents/skills/new-shareable-skill/`.** It runs intake → quality gate → placement (public/private + standalone/bundle + category) → scaffold → `compile.mjs` + `audit-skills` → docs → PR. Counterpart to `audit-skills` (create vs. verify).
- **`.agents/skills/` is for non-user-facing verification / build machinery**, not user-facing capabilities. `compile.mjs` walks only `skills/`, so `.agents/` content is never compiled or published. `audit-skills` lives there (pure verification machinery). `create-shareable-skill` does NOT -- it ships as a standalone catalog skill (see DECISIONS.md 2026-05-14 supersede entry; the earlier `.agents/` placement was reversed on user review).
- **Authoring a new skill: use `create-shareable-skill`** (`skills/operations/create-shareable-skill/`). It runs intake → quality gate → placement (catalog + standalone/bundle + category) → scaffold → `compile.mjs` + `audit-skills` → docs → PR. Counterpart to `audit-skills` (create vs. verify).
- **A skill that documents leak patterns trips `audit-skills`' own axis-1 scan once it lives under `skills/`.** `create-shareable-skill/references/quality-bar.md` is the live example. Known false positives; structural fix is an `audit-skills` exclusion path.
18 changes: 10 additions & 8 deletions .ytstack/M001-CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ size: M

## Goal

Ein `new-shareable-skill` Metaskill, der Agent/User durch das Shareable-Machen eines
Ein `create-shareable-skill` Metaskill, der Agent/User durch das Shareable-Machen eines
bestehenden oder das Neuerstellen eines Skills führt: Routing ins richtige Repo
(public `skills` vs. privates `yesterday-skills`) und Placement (standalone + Kategorie
vs. Bundle-Erweiterung mit Confirmation), Qualitäts-Gate, Doku-Updates, PR auf main --
abgeglichen mit der company-orga AI-Skills-Strategie.

## Exit criteria

- `new-shareable-skill` SKILL.md liegt in der richtigen Kategorie, `node compile.mjs`
- `create-shareable-skill` SKILL.md liegt in der richtigen Kategorie, `node compile.mjs`
läuft sauber durch, der Skill erscheint im Marketplace-Output.
- Skill kodiert die Repo-Policies: public-installability, no-internal-perspective,
folder/name-Parität, standalone-vs-bundle Entscheidungsbaum, public-vs-private
Expand All @@ -33,12 +33,14 @@ M -- see `M001-ROADMAP.md` for slice breakdown.

## Decisions locked in discuss phase

- 2026-05-14: `new-shareable-skill` lebt in `.agents/skills/`, NICHT im Marketplace-`skills/`-Baum
-- weil es das public↔private Catalog-Routing kennen muss; das Benennen des privaten
`yesterday-skills`-Repos in einem marketplace-publizierten Skill wäre genau der
internal-perspective-Leak, den die Repo-Regeln verbieten. `.agents/` ist Contributor-Tooling
(wie `audit-skills`), von der no-internal-perspective-Regel ausgenommen. Voller Eintrag in
`DECISIONS.md`.
- 2026-05-14 (REVIDIERT, siehe nächster Punkt): zunächst entschieden, `create-shareable-skill` in
`.agents/skills/` zu legen statt im Marketplace-`skills/`-Baum -- wegen des Leak-Risikos beim
Benennen des privaten `yesterday-skills`-Repos. Per PR #1 so umgesetzt.
- 2026-05-14: Auf User-Review revidiert -- `create-shareable-skill` ist ein **standalone Catalog-Skill**
unter `skills/operations/create-shareable-skill/`, kompiliert + im Marketplace gelistet (Count 14→15).
Authoring ist selbst eine user-facing Capability. Nur `audit-skills` bleibt in `.agents/`
(reine Verifikations-Maschinerie). User-Anweisung schlägt Agent-Architektur-Urteil. Voller
Eintrag + Supersede in `DECISIONS.md`.
- 2026-05-14: Kein Mirror im privaten `yesterday-skills`. Der Skill *kennt* beide Kataloge und
routet zwischen ihnen; er muss nicht doppelt existieren. Ein Repo, ein Skill.
- 2026-05-14: Policies werden NICHT dupliziert -- der Skill verweist auf die Single Source of
Expand Down
20 changes: 11 additions & 9 deletions .ytstack/M001-ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ completed_slices: 1

# M001 Roadmap

**Goal:** Ein `new-shareable-skill` Metaskill, der Agent/User durch das Shareable-Machen
**Goal:** Ein `create-shareable-skill` Metaskill, der Agent/User durch das Shareable-Machen
eines bestehenden oder das Neuerstellen eines Skills führt: Routing ins richtige Repo
(public `skills` vs. privates `yesterday-skills`) und Placement (standalone + Kategorie
vs. Bundle-Erweiterung mit Confirmation), Qualitäts-Gate, Doku-Updates, PR auf main --
abgeglichen mit der company-orga AI-Skills-Strategie.

**Exit criteria:**
- `new-shareable-skill` SKILL.md liegt in der richtigen Kategorie, `node compile.mjs`
- `create-shareable-skill` SKILL.md liegt in der richtigen Kategorie, `node compile.mjs`
läuft sauber durch, der Skill erscheint im Marketplace-Output.
- Skill kodiert die Repo-Policies: public-installability, no-internal-perspective,
folder/name-Parität, standalone-vs-bundle Entscheidungsbaum, public-vs-private
Expand All @@ -33,16 +33,18 @@ Executed directly without a formal slice/task pass, on explicit user instruction
("DU SOLLST DAS IMPLEMENTIEREN ... JETZT, BIS ZUM ENDE"). User instructions take
precedence over the ytstack flow (`using-ytstack`: instruction priority 1).

- [x] S01 -- `new-shareable-skill` meta-skill + contributor docs
- `.agents/skills/new-shareable-skill/SKILL.md` -- end-to-end authoring workflow
- `.agents/skills/new-shareable-skill/references/placement.md` -- catalog / form / category routing
- `.agents/skills/new-shareable-skill/references/quality-bar.md` -- shareable-by-default gates + templates
- `CONTRIBUTING.md`, `AGENTS.md` -- reference the meta-skill
- Verified: `node compile.mjs` clean, marketplace count unchanged at 14 (skill is `.agents/` tooling, not compiled), leak scan on new files clean
- [x] S01 -- `create-shareable-skill` standalone catalog skill + contributor docs
- `skills/operations/create-shareable-skill/SKILL.md` -- end-to-end authoring workflow
- `skills/operations/create-shareable-skill/.plugin.json` -- marketplace manifest
- `skills/operations/create-shareable-skill/references/placement.md` -- catalog / form / category routing
- `skills/operations/create-shareable-skill/references/quality-bar.md` -- shareable-by-default gates + templates
- `README.md`, `CONTRIBUTING.md`, `AGENTS.md` -- catalog table + reference the skill
- Verified: `node compile.mjs` clean, marketplace count 14 -> 15 (skill compiled + listed), `.plugin.json` symlinked
- Note: first delivered (PR #1) under `.agents/skills/`; moved to standalone on user review

## Run order

Single slice, done. Delivered via PR branch `add-new-shareable-skill` (push pending).
Single slice, done. PR #1 (`.agents/` placement) merged, then PR #2 moved it to standalone.

## How to update this file

Expand Down
8 changes: 4 additions & 4 deletions .ytstack/STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ active_task: none

# State

**Status:** M001 done -- `new-shareable-skill` meta-skill authored in `.agents/skills/` + contributor docs updated. Executed directly (no formal slice/task pass) on explicit user instruction. PR pending push.
**Status:** M001 done -- `create-shareable-skill` is a standalone catalog skill at `skills/operations/create-shareable-skill/` + contributor docs updated. Executed directly (no formal slice/task pass) on explicit user instruction. Initial `.agents/` placement was reversed on user review (see DECISIONS.md supersede entry).

**Next action:** Push branch `add-new-shareable-skill` and open the PR to `main` (awaiting user "push" go-ahead).
**Next action:** None pending for M001. Run `ytstack:reassess-roadmap` if continuing.

**Catalog context:** Public catalog live at `Yesterday-AI/skills` with 14 plugins (1 external + 4 bundles + 9 standalone). Compile pipeline working, marketplace symlinks generated, GitHub Actions workflow in place. Open question on plugin install path (cache resolution).
**Catalog context:** Public catalog live at `Yesterday-AI/skills` with 15 plugins (1 external + 4 bundles + 10 standalone). Compile pipeline working, marketplace symlinks generated, GitHub Actions workflow in place. Open question on plugin install path (cache resolution).

## What's done

Expand All @@ -24,7 +24,7 @@ active_task: none
- OSS scaffold: README, LICENSE (MIT), CONTRIBUTING, NOTICE, AGENTS.md
- `.ytstack/` project memory (this file + DECISIONS, KNOWLEDGE, RUNTIME, PROJECT, PREFERENCES)
- `.agents/skills/audit-skills/` -- 3-axis repo audit skill (leaks, consistency, spec compliance)
- `.agents/skills/new-shareable-skill/` -- authoring meta-skill: intake → quality gate → public/private + standalone/bundle placement → scaffold → compile+audit → docs → PR (M001; counterpart to audit-skills)
- `skills/operations/create-shareable-skill/` -- standalone authoring skill: intake → quality gate → catalog + standalone/bundle placement → scaffold → compile+audit → docs → PR (M001; counterpart to audit-skills)
- GitHub Actions: `compile.yml` (auto-recompile on main push, PAT-pushed via `COMPILE_PUSH_TOKEN`, bot identity from `vars.BOT_NAME` / `vars.BOT_EMAIL`); `secret-scan.yml` (gitleaks)
- Repo created on GitHub (Yesterday-AI/skills, public), 12 topics set
- Sister repo `Yesterday-AI/yesterday-skills` (private catalog) brought to parity: same compile pipeline, OSS scaffold, `.ytstack/`, and as of 2026-05-13 also `compile.yml` + folder/name parity rule + normalized bundle READMEs
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ A single Node script (`compile.mjs`) discovers both and produces `.compiled/skil

| Task | Where to edit |
|---|---|
| Author / promote a skill (guided) | `.agents/skills/new-shareable-skill/SKILL.md` -- walks intake → quality gate → placement → scaffold → compile + audit → docs → PR |
| Author / promote a skill (guided) | `skills/operations/create-shareable-skill/SKILL.md` -- walks intake → quality gate → placement → scaffold → compile + audit → docs → PR |
| Add a standalone skill | `skills/<category>/<slug>/SKILL.md` (+ optional `.plugin.json`), then `node compile.mjs` |
| Add a bundle | `plugins/<name>/plugin.json` (canonical), then `node compile.mjs` |
| Add an external plugin (github-hosted) | `marketplace.json` (top-level, `plugins[]` array), then `node compile.mjs` |
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Catalog repos rot when they accumulate plugin-side concerns. This repo has three

## Authoring a new skill (guided)

The fastest correct path is the `new-shareable-skill` agent skill at [`.agents/skills/new-shareable-skill/SKILL.md`](./.agents/skills/new-shareable-skill/SKILL.md). It walks one skill end to end -- intake, the "shareable by default" quality gate, the public-vs-private and standalone-vs-bundle placement decision, category selection, scaffold, `compile.mjs` + `audit-skills`, docs, and the PR to `main`. It refuses to scaffold a skill that cannot meet the bar.
The fastest correct path is the `create-shareable-skill` skill at [`skills/operations/create-shareable-skill/SKILL.md`](./skills/operations/create-shareable-skill/SKILL.md). It walks one skill end to end -- intake, the "shareable by default" quality gate, the public-vs-private and standalone-vs-bundle placement decision, category selection, scaffold, `compile.mjs` + `audit-skills`, docs, and the PR to `main`. It refuses to scaffold a skill that cannot meet the bar.

The sections below are the manual reference for each step it automates.

Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ No auth required -- this catalog is public.

## What's in the catalog

14 plugins total: 1 external, 4 bundles, 9 standalone skills.
15 plugins total: 1 external, 4 bundles, 10 standalone skills.

### Bundles (`./plugins/`)

Expand Down Expand Up @@ -90,6 +90,7 @@ No auth required -- this catalog is public.

| Skill | Purpose |
|---|---|
| [create-shareable-skill](./skills/operations/create-shareable-skill) | Author a catalog-ready skill: quality gate, placement routing, scaffold, docs, PR |
| [paperclip-api](./skills/development-operations/paperclip-api) | Paperclip AI REST API client (companies, agents, issues, budgets) |

#### Travel
Expand Down
17 changes: 17 additions & 0 deletions skills/operations/create-shareable-skill/.plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "create-shareable-skill",
"description": "Turn an existing skill or a fresh idea into a catalog-ready shareable skill -- run the quality gate, decide catalog and standalone-vs-bundle placement, pick the category, scaffold SKILL.md (+ optional .plugin.json), update the catalog docs, and open a PR. Use when adding a new skill to the catalog or promoting a personal skill into a shareable one.",
"author": {
"name": "Yesterday"
},
"homepage": "https://github.com/Yesterday-AI/skills/tree/main/.compiled/skill-plugins/create-shareable-skill",
"repository": "https://github.com/Yesterday-AI/skills",
"license": "MIT",
"keywords": [
"claude-code",
"yesterday",
"skill-authoring",
"meta",
"contributing"
]
}
Loading