Writing Livekit Scenarios
livekit-examples/agent-starter-python
Creates and maintains the scenarios a LiveKit agent simulation runs, and wires the agent to consume them.
Break out of a locked problem frame by picking one disciplined move — reframe, provocation (Po), random stimulus, SCAMPER, inversion, structured analogy, constraint play, or family traversal — and…
$ npx skills add oaustegard/claude-skills --skill generative-thinking -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install oaustegard/claude-skills generative-thinking --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/generative-thinking .claude/skills/generative-thinking && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "generative-thinking" agent skill from https://github.com/oaustegard/claude-skills/tree/main/generative-thinking into .claude/skills/generative-thinking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generative-thinking", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/oaustegard/claude-skills/tree/main/generative-thinkingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add oaustegard/claude-skills --skill generative-thinking -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install oaustegard/claude-skills generative-thinking --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/generative-thinking .agents/skills/generative-thinking && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "generative-thinking" agent skill from https://github.com/oaustegard/claude-skills/tree/main/generative-thinking into .agents/skills/generative-thinking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generative-thinking", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill generative-thinking -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install oaustegard/claude-skills generative-thinking --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/generative-thinking .cursor/skills/generative-thinking && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "generative-thinking" agent skill from https://github.com/oaustegard/claude-skills/tree/main/generative-thinking into .cursor/skills/generative-thinking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generative-thinking", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/oaustegard/claude-skills.git --path generative-thinking--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add oaustegard/claude-skills --skill generative-thinking -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install oaustegard/claude-skills generative-thinking --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/generative-thinking .gemini/skills/generative-thinking && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "generative-thinking" agent skill from https://github.com/oaustegard/claude-skills/tree/main/generative-thinking into .gemini/skills/generative-thinking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generative-thinking", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install oaustegard/claude-skills generative-thinkingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add oaustegard/claude-skills --skill generative-thinking -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/generative-thinking .github/skills/generative-thinking && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "generative-thinking" agent skill from https://github.com/oaustegard/claude-skills/tree/main/generative-thinking into .github/skills/generative-thinking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generative-thinking", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill generative-thinking -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install oaustegard/claude-skills generative-thinking --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/generative-thinking .opencode/skills/generative-thinking && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "generative-thinking" agent skill from https://github.com/oaustegard/claude-skills/tree/main/generative-thinking into .opencode/skills/generative-thinking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generative-thinking", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
generative-thinkingBreak out of a locked problem frame by picking one disciplined move — reframe, provocation (Po), random stimulus, SCAMPER, inversion, structured analogy, constraint play, or family traversal — and…
Generative Thinking is an agent skill from oaustegard/claude-skills. Break out of a locked problem frame by picking one disciplined move — reframe, provocation (Po), random stimulus, SCAMPER, inversion, structured analogy, constraint play, or family traversal — and committing to it before evaluating. Use when stuck, when options feel narrow or obvious, when iterations produce variations of the same idea, or when the user says "widen this", "break out of", "think differently", "I'm stuck", "feels too obvious", "stress-test the framing", "what am I missing", or holds two related…
Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `CHANGELOG.md`, `README.md` and `references/stimulus-vocabulary.md`).
It sits in Testing & QA, covering Load testing. The repository describes itself as: My collection of Claude skills. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 559a6cd. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
arxiv.orgen.wikipedia.orgdoi.orgdebono.commattrickard.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Generative Thinking loads about 5.7k tokens when it runs, and up to ~6.6k if it reads all its reference files. Until then it costs about 182 tokens; SKILL.md has 3,070 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from oaustegard/claude-skills at commit 559a6cd, republished under its MIT licence (© oaustegard). 3,070 words, ~5,730 tokens.
.claude/skills/generative-thinking/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Fixation is the default state. When a generator (human or LLM) has been working on a problem, attention concentrates on the current framing and subsequent ideas tend to be local variations on it. This skill is the interrupt: spend one move stepping sideways, then resume.
The discipline matters more than the move. Pick ONE technique per invocation, run it without second-guessing, and produce explicit reframings or candidate entry points — not a brainstorm list in the same frame.
Claude activates this skill when:
Do NOT activate this skill as a default before every consequential task — fixation is the trigger, not stakes. If the current frame is working, let it work.
Three rules that apply across every move below. Violations make the output ideation-flavored but structurally identical to what came before.
Stop condition. Stop when the move has produced 3+ non-trivial framings, or a single framing that reorganizes the problem (one sharp surprise beats five adjacent). Do not keep generating because the list looks short — volume is not the product.
The fire test. After every move, ask: could this output have been produced without the move? If yes, the move did not fire. Either commit harder (push the provocation further, make the reframe more aggressive, re-roll the random word, invert on a different axis) or the move was mismatched to the stuck-pattern — re-diagnose and pick the better-matched move. Re-diagnosis after a miss is not menu-rotation; menu-rotation is cycling through techniques without commitment. One move at a time, each one fully, and if it misses, diagnose why before the next.
Tail sift. The fire test with a number attached. Post-trained models carry a typicality bias: asked for one candidate they return the modal one, and asked for a list they return the top-k modes — a bestseller list, not a sample (Zhang et al. 2025). The 3 framings a move produces are subject to this too. So before evaluating, over-generate — 5 to 8 candidates rather than 3 — and write next to each one the probability, 0 to 1, that a generator still inside the old frame would have produced it. Drop everything above the threshold; the remainder is the move's actual output. Start the threshold at 0.3 and lower it if the survivors still read as adjacent. Writing the number is the mechanism, not decoration: prompts that request a distribution with verbalized probabilities recover diversity that prompts for instances or lists do not, quality holds when the candidates are reasoned rather than listed, and lowering the stated threshold moves output further into the tail. The gain scales with model capability; on a small model the sift adds burden without adding distance.
Match the stuck-pattern to the move. When unsure, default to Reframe.
| If the stuck-pattern is… | Reach for… |
|---|---|
| Framing feels forced ("must be X or Y") | Reframe — change the verb, subject, scope, or level |
| Generator keeps returning near-duplicates | Random stimulus — force an unrelated concept into the frame |
| Obvious answer is wrong but you can't see past it | Provocation (Po) — state something impossible, extract movement |
| Iterating on an existing artifact | SCAMPER — seven structured transforms |
| Stuck on "how do we make X succeed?" | Inversion — ask "how do we guarantee X fails?" then negate |
| Problem is defined entirely in one domain's vocabulary | Structured analogy — map objects and relations by function into a distant domain, search there |
| Every solution is blocked by a constraint | Constraint play — remove it ("assume magic"), or add an absurd one ("must fit in a tweet") |
| Two known examples, no theory of the space between/beyond them | Family traversal — name the shared family, walk it to its limits |
The problem-as-stated is rarely the problem-to-solve. Mutate the sentence:
Produce 3 reframings. Fired if: at least one makes the original statement sound naive, or shifts who owns the problem.
Edward de Bono's method. Prefix a deliberately wrong, impossible, or absurd statement with Po: to signal it is not a proposal — it is a stimulus. Then extract movement: what principle, consequence, or adjacent idea does this surface?
Four recipes (de Bono's formal provocations):
The canonical example: a factory pollutes a river. Po: the factory is downstream of itself. Impossible, but it generates: move intake downstream of discharge. Internal incentive to not pollute. Closed-loop water. The provocation is discarded; the movement stays.
Fired if: the provocation is genuinely impossible or absurd (not merely edgy), AND extracting movement yields a principle that survives translation back to the real constraints. If the "provocation" is a thing you could actually do, it's a proposal, not a Po — push it further.
Pick a word, object, or domain with no connection to the problem. Force a connection. The forced-feel is the point — it routes around the habituated pathway.
Template: "How is [problem] like [random]?" then "What does that suggest?"
Sourcing for humans: a random Wikipedia article, a nearby physical object, an Oblique Strategies card, a concept from an unrelated field on the current desk. Commit to the first thing you land on; re-rolling defeats the method.
Sourcing for an LLM agent: an LLM asked directly for a random word does not produce one — the same attention that locked the frame picks a word adjacent to it, and post-training biases the pick toward whatever is typical. Two sources work:
references/stimulus-vocabulary.md holds 128 nouns from distant domains for exactly this; the Oblique Strategies deck works the same way. Measured: the recipe reaches near-PRNG faithfulness on long-reasoning models, and on open-ended generation it beat both an injected PRNG seed and a random-number tool call, because the string can be re-hashed for several local choices and the derivation is on the page. Two failure modes, both measured: a lazy extraction that reads only the first character (LLM-generated strings have strong positional bias — 947 of 1000 QwQ-32B strings opened with "7"), and skipping the written arithmetic, after which reasoning models hallucinate the result. Use the whole string; write the sum. Models under ~8B cannot execute the reduction reliably — hand them an external source.Fired if: the connection is genuinely forced (the first 10 seconds feel wrong), and working through the force produces an angle that was not in your prior search space. If the random word feels "relevant" immediately, you re-rolled, picked from attention, or read one character of the seed — get a new one.
For iterating on an existing artifact. Walk the seven prompts once; do not pick favorites in advance.
Fired if: at least one prompt produced a candidate you would not have reached by asking "what's a better version of this?". If all seven outputs are adjacent polish, the artifact is not the unit of analysis — zoom out and try Reframe.
Solve the inverse problem, then negate the solution. Works because failure modes are often more concrete than success paths.
Fired if: inverting surfaced a concrete risk, mechanism, or incentive the forward framing was hiding. If negating the inverted answer gives you the same thing you already had, the inversion was too symmetric — invert on a different axis (goals → incentives, success → unobservable, user → operator).
Move the problem into a distant domain by its relational structure, not by asking the distant domain a question. "How would biology solve this?" is the cross-domain baseline in Shen, Druckmann & Zou (2026), and it collapses almost as hard as no domain prompt at all: across 150 generations per problem, about 5% of proposed domains were unique, and solution diversity (Vendi score) was 8.3 against 5.8 for the unconstrained baseline. Explicit structure-mapping scored 90–173% higher on solution diversity, produced solutions judged novel 50–69% of the time against 1.6–38% for the baselines, and reached domains further from the problem. The written mapping is what changes the outcome.
Four steps, after Gentner's structure-mapping theory:
Domain menu, when step 2 needs a starting point: natural (biology, ecology, geology), trade (kitchen, ER triage, shipping dock), role (CFO, child, historian, adversary), scale (100x, 1/100x).
Fired if: the mapped domain is one the problem's own literature would not cite, AND step 3 returned a named, existing method — not a metaphor. If the object pairs match by resemblance rather than role, or the "method" is the original problem restated in new nouns, the mapping was surface-level; redo step 2 with a further domain.
Constraints define the solution space. Move them deliberately.
Fired if: a relaxed-constraint solution reveals what you actually value (not just what you'll accept), or an added-constraint solution is sharper than the unconstrained one. If both feel like the same answer with a different budget, the binding constraint is elsewhere — find it.
For when you hold two (or more) related instances and generation keeps orbiting them. The pair is not the object — the parametrized family containing both is. Sub-moves in descending observed yield:
Then sharpen and verify: the traversal's real product is questions precise enough to have derivable answers; the discovery happens in the derivation and a cheap measurement, not in the geometry. (A frontier framing of an addressing scheme implied a capacity law, j² ≤ 2^(significand bits); sixty seconds of numpy confirmed a cliff at exactly N = 4096, closing a four-month-old empirical mystery.) Without this step the move outputs taxonomy, not generation.
Fired if: a limit point or constraint-swap landed outside the prior search space, AND at least one output is a checkable claim. If the output is only a tidy classification of the anchors, the move stalled — push further along the edge or swap the constraint.
Caution: do not equate the interior of the space with novelty. In high dimensions essentially all operation is already extrapolation outside the training hull (Balestriero & LeCun 2021), and mixtures of known points are averages. The generative directions are the limits and the constraint-swaps; the chord is a probe, not a doctrine.
LLM agents exhibit a context-bound analog of functional fixedness: attention concentrates on current framing and generates variations of it. A second mechanism compounds it and does not depend on context: preference data favors familiar text, so post-training sharpens the policy toward the modal continuation for any prompt (Zhang et al. 2025, Theorem D.1) — which is why "give me five alternatives" returns five near-neighbors even in a fresh context. Signals this is happening:
When detected, the fix is the same: pick one move from the diagnostic table, execute it on the agent's own current framing, and explicitly write out the new framing(s) before resuming work. The write-out is essential — a framing that stays implicit in attention gets re-absorbed into the previous frame.
Load these only when the user wants depth on a specific technique.
DIAGNOSE: What kind of stuck?
→ framing forced : REFRAME
→ near-duplicates : RANDOM STIMULUS
→ can't see past obvious: PROVOCATION (Po)
→ iterating an artifact : SCAMPER
→ chasing success : INVERSION
→ one domain vocabulary : STRUCTURED ANALOGY
→ blocked by constraint : CONSTRAINT PLAY
→ two examples, no theory: FAMILY TRAVERSAL
DISCIPLINE:
1. Generation before evaluation
2. One move, committed
3. Output framings, not ideas
TAIL SIFT: over-generate 5-8, tag P(old frame reaches it), drop > 0.3
STOP when: 3+ non-trivial framings produced, or one surprising framing that reorganizes the problem.© oaustegard, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in generative-thinking of oaustegard/claude-skills.
Open the folder on GitHubat commit 559a6cd
Generative Thinking next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Generative Thinking this skilloaustegard/claude-skills | 150 | — | ~5.7k | Automated safety check: Pass | MIT | |
| Writing Livekit Scenarioslivekit-examples/agent-starter-python | 264 | 1 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Go Testingcxuu/golang-skills | 170 | 1 repos | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Goalcraftgrp06/goalcraft | 102 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Thinking Partnermattnowdev/thinking-partner | 205 | — | ~4.4k | Automated safety check: Pass | MIT | |
| Challengeblueberrycongee/termcanvas | 406 | — | ~1.5k | Automated safety check: Pass | MIT |
livekit-examples/agent-starter-python
Creates and maintains the scenarios a LiveKit agent simulation runs, and wires the agent to consume them.
cxuu/golang-skills
A skill your agent uses when writing, reviewing, or improving Go test code — including table-driven tests, subtests, parallel tests, test helpers, test doubles, and assertions with cmp.Diff.
grp06/goalcraft
Turn a rough draft, vague ambition, or messy task brief into a powerful Codex /goal objective for persistent, evidence-checked work.
mattnowdev/thinking-partner
A deterministic thinking partner that challenges assumptions and applies mental models to sharpen decisions, solve problems, and think more clearly.
blueberrycongee/termcanvas
Adversarial review skill. An agent skill from blueberrycongee/termcanvas.
kunchenguid/vision
Draft and stress-test a VISION.md for a repository, then iterate with the author on an interactive review board until approved.
oaustegard/claude-skills
Deprecated sampler that captures short windows of the Bluesky firehose, clusters trending terms and builds an HTML report; replaced by the browsing-bluesky skill.
oaustegard/claude-skills
Builds interactive Vega-Lite charts from uploaded data: analyzes the fields, picks five to ten fitting chart types, and produces a React artifact with the data embedded inline.
oaustegard/claude-skills
Builds self-contained single-file HTML pages such as reports, decks, postmortems, flowcharts and prototypes from a small spec using a bundled Python composer and templates.
oaustegard/claude-skills
Rewrites model-sounding prose into plain technical writing and checks that every claim survives, for PR text, docs, commit messages and similar drafts.
oaustegard/claude-skills
Zero-shot univariate time series forecasting using the Reverso foundation model (NumPy/Numba CPU-only inference).
oaustegard/claude-skills
Guides building standards-based Preact apps with native-first choices, HTM syntax, import maps and vendored ESM, from single-file demos to larger builds.
Categories
Break out of a locked problem frame by picking one disciplined move — reframe, provocation (Po), random stimulus, SCAMPER, inversion, structured analogy, constraint play, or family traversal — and…. Generative Thinking is an agent skill from oaustegard/claude-skills. Break out of a locked problem frame by picking one disciplined move — reframe, provocation (Po), random stimulus, SCAMPER, inversion, structured analogy, constraint play, or family traversal — and committing to it before evaluating.
Generative Thinking fits situations like: options feel narrow; iterations produce variations of the same idea; the user says widen this; think differently.
Run `npx skills add oaustegard/claude-skills --skill generative-thinking -a claude-code`. Or copy the skill folder (generative-thinking in oaustegard/claude-skills) into .claude/skills/generative-thinking in your project. Claude Code loads it when a task matches its description.
Run `npx skills add oaustegard/claude-skills --skill generative-thinking -a codex`. Or copy the skill folder (generative-thinking in oaustegard/claude-skills) into .agents/skills/generative-thinking in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add oaustegard/claude-skills --skill generative-thinking -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generative-thinking, .gemini/skills/generative-thinking, .github/skills/generative-thinking and .opencode/skills/generative-thinking in your project.
SKILL.md names no scripts, command-line tools or credentials: Generative Thinking is instructions for the agent only.
SKILL.md names 5 domains. As links in the text: arxiv.org, en.wikipedia.org, doi.org, debono.com and mattrickard.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Generative Thinking is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 828 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Generative Thinking: Writing Livekit Scenarios (livekit-examples/agent-starter-python, 264 stars), Go Testing (cxuu/golang-skills, 170 stars), Goalcraft (grp06/goalcraft, 102 stars) and Thinking Partner (mattnowdev/thinking-partner, 205 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
oaustegard (a GitHub user) maintains it in oaustegard/claude-skills, which has 150 GitHub stars. The repository holds 93 skills in this directory. The repository was last updated on October 2, 2026.
Source: oaustegard/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.