Agent skill

Ttt Triage

by shanselman in shanselman/TinyToolTown

Triage Tiny Tool Town submissions. An agent skill from shanselman/TinyToolTown.

MITAuto-check passedProduct & Project Management

Install Ttt Triage

skills CLI
$ npx skills add shanselman/TinyToolTown --skill ttt-triage -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install shanselman/TinyToolTown ttt-triage --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/shanselman/TinyToolTown.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/ttt-triage .claude/skills/ttt-triage && rm -rf skills-src

Use ~/.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/

Facts

Skill name
ttt-triage
GitHub stars
272
Token cost
~2.2k tokens
SKILL.md length
970 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Triage Tiny Tool Town submissions. An agent skill from shanselman/TinyToolTown.

  • Works in 9 steps: Fetch Open Issues → Evaluate Each Submission → Present Triage Table → …
  • Tasks that involve User stories
  • SKILL.md covers When to Use, Tool Submission Triage Workflow, Acceptance Criteria and Confidence Levels, plus 6 more sections
  • Calls gh and npm

What it does

Ttt Triage is an agent skill from shanselman/TinyToolTown. Triage Tiny Tool Town submissions. Reviews new-tool and author-page issues in shanselman/TinyToolTown, evaluates tools against acceptance criteria, queues imports, and helps convert verified author claims into author content files.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Product & Project Management, covering User stories. The repository describes itself as: TinyToolTown is a place for stupid-delightful tools made with love. Free, fun & open source. Made for an audience of one. The licence is MIT.

When your agent uses it

  • Tasks that involve User stories

Example prompts

  • “/ttt-triage”

Requirements

  • Python 3

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Fetch Open Issues
  2. Evaluate Each Submission
  3. Present Triage Table
  4. Act on Decisions
  5. Fetch Author Claims
  6. Check Verification Labels
  7. Evaluate Claim Readiness
  8. Create or Update Author Files
  9. Validate and Close

What it can do on your machine

Read from SKILL.md and the folder at commit 548b82d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • tinytooltown.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ttt Triage loads about 2.2k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 970 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~61
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from shanselman/TinyToolTown at commit 548b82d, republished under its MIT licence (© shanselman). 970 words, ~2,216 tokens.

Download SKILL.mdSave it as .claude/skills/ttt-triage/SKILL.md (or your agent's skills folder).
name
ttt-triage
description
Triage Tiny Tool Town submissions. Reviews new-tool and author-page issues in shanselman/TinyToolTown, evaluates tools against acceptance criteria, queues imports, and helps convert verified author claims into author content files.

Tiny Tool Town Triage Skill

Triage submissions for Tiny Tool Town — a community directory of free, open-source tiny tools and claimed author pages.

When to Use

Invoke this skill when asked to:

  • Triage new issues / submissions
  • Review tool submissions
  • Approve or reject tools
  • Review author-page claims
  • Create or update author profile files
  • Check what new tools are pending

Tool Submission Triage Workflow

Step 1: Fetch Open Issues
powershell
gh issue list --repo shanselman/TinyToolTown --state open --label new-tool --json number,title,body,labels,createdAt --limit 50

Or use the GitHub MCP list_issues tool with state: OPEN on shanselman/TinyToolTown.

Step 2: Evaluate Each Submission

For each issue, assess against all of these criteria and assign a confidence level.

Step 3: Present Triage Table

Output a markdown table with: issue #, tool name, language, license, confidence (HIGH/MEDIUM/LOW), recommendation (APPROVE/REJECT/MAYBE), and notes.

Step 4: Act on Decisions

After the user confirms:

  • APPROVE: Label issue with queued-import (not approved — batch-approve.yml drains the queue)
  • REJECT: Close with a polite comment explaining why
  • MAYBE: Comment asking for the missing information

Acceptance Criteria

Approve if all of these are true:
  1. Open source — Has a recognized open-source license (MIT, Apache 2.0, GPL, ISC, BSD, etc.)
  2. Repo is public and accessible — Not a 404, not archived
  3. It's actually tiny — Single-purpose, small, focused tool; not a full platform or suite
  4. It's fun, useful, or delightful — TTT celebrates small, joyful tools
  5. Not enterprise/commercial — No SaaS, no paid tiers, no enterprise features
  6. Has a README — Should explain what the tool does
  7. Checklist is complete — All boxes checked in the submission form
Reject if any of these are true:
  1. No license — Repo has no LICENSE file and submitter didn't specify one
  2. Dead repo — 404, archived, or clearly abandoned
  3. Enterprise/commercial tool — Paid SaaS, enterprise pricing, or "free tier" of a commercial product
  4. Not a tiny tool — Full platform, framework, or suite
  5. Spam or low effort — Empty repo, no code, or clearly auto-generated submission
  6. Duplicate — Tool already exists on the site
Maybe / Request Changes if:
  1. License unclear — Repo exists but no LICENSE file; ask them to add one
  2. Borderline scope — Could be tiny or could be too big; use judgment
  3. CC BY-NC or similar — Non-commercial restriction is acceptable but worth flagging
  4. Repo looks new/empty — Very few commits, might not be ready yet

Confidence Levels

  • HIGH — Clear-cut decision, all criteria met or clearly violated
  • MEDIUM — Mostly clear but one minor concern
  • LOW — Significant uncertainty or borderline fit

Automated Labels

The submission workflow may add:

  • repo-verified
  • has-license
  • has-readme
  • has-image

Missing has-image is non-blocking.

Important Operational Notes

GitHub Auth
powershell
gh auth switch -u shanselman
Approval Queue

Never label issues with approved directly. Always use queued-import. The batch-approve.yml workflow is the sole writer and drains the queue.

Follow-up Comments

Before making a final decision, check whether the submitter recently commented that they added a license, fixed the repo, or uploaded an image.

Rejection Comments

Be kind and specific:

text
Hey @username! Thanks for submitting [tool name] to Tiny Tool Town! 👋

Unfortunately, we can't add this one because [specific reason].

[If fixable]: If you [add a license / trim it down / etc.], feel free to resubmit!

Thanks for thinking of us!
Checking for Duplicates
powershell
Get-ChildItem src/content/tools/*.md | Select-String -Pattern "github_url.*owner/repo"

Triage Report Format

md
## Recommend APPROVE (N tools)
| # | Tool | Language | Confidence | Notes |
|---|------|----------|------------|-------|
| 123 | ToolName | Python | HIGH | Brief reason |

## Maybe / Needs Info (N tools)
| # | Tool | Concern |
|---|------|---------|
| 456 | ToolName | What's needed |

## Recommend REJECT (N tools)
| # | Tool | Reason |
|---|------|--------|
| 789 | ToolName | Why it doesn't fit |

Post-Triage

After approvals are queued, optionally trigger the batch workflow:

powershell
gh workflow run batch-approve.yml --repo shanselman/TinyToolTown

Author Page Claim Workflow

Author page claims use the customize-author.yml issue form and are labeled author-page.

Step 1: Fetch Author Claims
powershell
gh issue list --repo shanselman/TinyToolTown --state open --label author-page --json number,title,body,labels,author,comments,createdAt --limit 50

Also look for open issues titled [Author] @... that may be missing the label. If an author issue is missing author-page, add that label (create it if necessary) so the validation workflow and future triage can find it.

Show full SKILL.md (425 more words)Show less
Step 2: Check Verification Labels

.github/workflows/validate-author-claim.yml validates claims only:

  • Runs for issues labeled author-page and for issues titled [Author] ....
  • Backfills the author-page label when it sees an author claim without the label.
  • Adds claim-verified when the issue author matches the requested GitHub username.
  • Adds invalid-author-claim when the issue author does not match the requested username.
  • Comments on missing or mismatched usernames.

Important: this workflow does not create or update files under src/content/authors/. Author file ingress is currently handled by maintainers/agents through normal repo commits or PRs.

Step 3: Evaluate Claim Readiness

Approve/take an author claim only when all are true:

  1. Claim is verified (claim-verified) or the issue author clearly matches the requested handle.
  2. The claimed handle has at least one accepted tool in src/content/tools/*.md.
  3. The issue includes useful display content: at minimum a display name plus a short bio or headline.
  4. Links are normal public profile/project links and use https://.
  5. Featured groups reference existing tool slugs when provided.

Request info when:

  • The claim has only links and no bio/headline. Claiming would replace the generated summary with a sparse page.
  • The requested handle does not have any listed tools yet.
  • Featured tool slugs are missing, misspelled, or not clearly intended.
  • Links are malformed or unclear.

Reject/close when:

  • The claim is invalid and not a special maintainer-approved case.
  • The requested username does not match the issue author and no maintainer override is provided.
Step 4: Create or Update Author Files

Author files live in:

text
src/content/authors/{normalized-github-handle}.md

Schema is defined in src/content.config.ts:

yaml
---
github: "handle"
name: "Display Name"
headline: "Short headline"
website_url: "https://example.com"
links:
  - label: "Blog"
    url: "https://example.com/blog"
notes:
  - "Short highlight."
sections:
  - title: "Tool group"
    description: "What these tools have in common."
    toolSlugs:
      - "existing-tool-slug"
---
Short bio / intro paragraph.

Guidelines:

  • Normalize github and filename to lowercase without @.
  • Keep user-provided voice, but lightly edit for clarity, length, and site fit.
  • Prefer and over & in prose/headlines unless it is part of a brand.
  • Do not include empty fields, _No response_, or placeholder bullets.
  • For author links, parse issue-form lines as Label - https://....
  • For sections, only include groups with valid existing tool slugs.
  • If no bio/headline is provided, do not create a file yet; comment asking for one.
Step 5: Validate and Close

For author content changes:

powershell
npm test
npm run build

After committing/pushing the author file:

  • Close the author issue with a comment referencing the commit.
  • If more info is needed, leave the issue open and comment with the specific missing information.

Combined Daily Triage

When asked to triage "everything" or "other issues":

  1. Fetch both new-tool and author-page issues.
  2. Fetch open PRs.
  3. Queue ready tools with queued-import.
  4. Convert ready author claims into src/content/authors/*.md via commit/PR.
  5. Request missing author info instead of creating sparse profiles.
  6. Close or decline stale/superseded PRs only when explicitly authorized.

© shanselman, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/ttt-triage of shanselman/TinyToolTown.

Open the folder on GitHubat commit 548b82d

Compare with similar skills

Ttt Triage 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.

Ttt Triage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ttt Triage this skillshanselman/TinyToolTown272—~2.2kAutomated safety check: PassMIT
User Story Writerdeanpeters/Product-Manager-Skills7.2k2 repos~2.9kAutomated safety check: PassCustom licence
Ralph Tui Create Beadssubsy/ralph-tui2.5k1 repos~2.6kAutomated safety check: PassMIT
Agile Product Owneralirezarezvani/claude-skills28k3 repos~3.2kAutomated safety check: PassMIT
Ralph Tui Create Beads Rustsubsy/ralph-tui2.5k1 repos~2.8kAutomated safety check: PassMIT
To Specbestofjs/bestofjs3.1k21 repos~757Automated safety check: PassMIT

Similar skills

  • User Story Writer

    deanpeters/Product-Manager-Skills

    Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.

    7.2k GitHub starsUsed in 2 repos~2.9k tokens
    Product & Project ManagementAuto-check passed
  • Ralph Tui Create Beads

    subsy/ralph-tui

    Convert PRDs to beads for ralph-tui execution. An agent skill from subsy/ralph-tui.

    2.5k GitHub starsUsed in 1 repo~2.6k tokens
    Product & Project ManagementAuto-check passed
  • Agile Product Owner

    alirezarezvani/claude-skills

    Writes INVEST-checked user stories with acceptance criteria, splits epics, plans sprints from velocity and ranks the backlog with a weighted score.

    28k GitHub starsUsed in 3 repos~3.2k tokens
    Product & Project ManagementAuto-check passed
  • Convert PRDs to beads for ralph-tui execution using beads-rust (br CLI).

    2.5k GitHub starsUsed in 1 repo~2.8k tokens
    Product & Project ManagementAuto-check passed
  • To Spec

    bestofjs/bestofjs

    Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed.

    3.1k GitHub starsUsed in 21 repos~757 tokens
    Product & Project ManagementAuto-check passed
  • Ralph Tui Create JSON

    subsy/ralph-tui

    Convert PRDs to prd.json format for ralph-tui execution. An agent skill from subsy/ralph-tui.

    2.5k GitHub starsUsed in 1 repo~2.6k tokens
    Product & Project ManagementAuto-check passed

Questions about Ttt Triage

What does Ttt Triage do?

Triage Tiny Tool Town submissions. An agent skill from shanselman/TinyToolTown. Ttt Triage is an agent skill from shanselman/TinyToolTown. Triage Tiny Tool Town submissions.

When should I use Ttt Triage?

Ttt Triage fits situations like: tasks that involve User stories.

How do I install Ttt Triage in Claude Code?

Run `npx skills add shanselman/TinyToolTown --skill ttt-triage -a claude-code`. Or copy the skill folder (.github/skills/ttt-triage in shanselman/TinyToolTown) into .claude/skills/ttt-triage in your project. Claude Code loads it when a task matches its description.

How do I install Ttt Triage in Codex?

Run `npx skills add shanselman/TinyToolTown --skill ttt-triage -a codex`. Or copy the skill folder (.github/skills/ttt-triage in shanselman/TinyToolTown) into .agents/skills/ttt-triage in your project. Codex loads it when a task matches its description.

Can I use Ttt Triage in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add shanselman/TinyToolTown --skill ttt-triage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ttt-triage, .gemini/skills/ttt-triage, .github/skills/ttt-triage and .opencode/skills/ttt-triage in your project.

What does Ttt Triage need to run?

Going by SKILL.md and its folder, Ttt Triage needs the command-line tools its instructions call (gh and npm). Our summary lists: Python 3.

Does Ttt Triage access the network?

SKILL.md names 1 domain. As links in the text: tinytooltown.com. This is read from the text; nothing was executed.

Is Ttt Triage safe to install?

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.

What licence does Ttt Triage use?

Ttt Triage is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ttt Triage use?

About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ttt Triage?

Skills that share tags, products or a category with Ttt Triage: User Story Writer (deanpeters/Product-Manager-Skills, 7.2k stars), Ralph Tui Create Beads (subsy/ralph-tui, 2.5k stars), Agile Product Owner (alirezarezvani/claude-skills, 28k stars) and Ralph Tui Create Beads Rust (subsy/ralph-tui, 2.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ttt Triage?

shanselman (a GitHub user) maintains it in shanselman/TinyToolTown, which has 272 GitHub stars. The repository was last updated on October 11, 2026.

Source: shanselman/TinyToolTown on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.