AGENT SKILL

compare-tools

Use whenever the user needs to *choose* a technology, library or tool for this project: "which library should I use", "help me pick a tool", "what's the best X for this", "compare these technologies", "should I use X or Y", "what are my options for Z". Trigger even when it isn't phrased as a comparison. Explores the codebase, aligns on priorities (community support, maintenance, lock-in, extensibility), researches the market, and writes a report to ./ideas/ with every viable option, doc links, a comparison table, and a ranked list scored out of 100 against the user's own priorities.

License 许可
MIT
最近更新
2026-11-11
Stars
★ 0
Forks
0

01 前言 Front Matter

name
compare-tools
description
Use whenever the user needs to *choose* a technology, library or tool for this project: "which library should I use", "help me pick a tool", "what's the best X for this", "compare these technologies", "should I use X or Y", "what are my options for Z". Trigger even when it isn't phrased as a comparison. Explores the codebase, aligns on priorities (community support, maintenance, lock-in, extensibility), researches the market, and writes a report to ./ideas/ with every viable option, doc links, a comparison table, and a ranked list scored out of 100 against the user's own priorities.

02 资源文件 4

03 SKILL.md 正文

Compare Tools

Help the user pick the right technology for a specific use case. The output is a grounded, auditable recommendation — not a generic listicle, but a score derived from this codebase's shape and this user's stated priorities.

Operating principles

  • Codebase first. Technology decisions are context-dependent. Understand what's already here before evaluating what might be added.
  • Priorities are the rubric. Don't rank tools on your own taste. Derive the ranking from the user's stated priorities weighted against observed options. Show the arithmetic.
  • Push back when it matters. If a stated priority contradicts the observed codebase (e.g. "avoid vendor lock-in" in a repo already deep in AWS), name that tension and ask them to reconcile. Don't push back reflexively — only when the conflict is real and material.
  • Research, don't invent. Don't claim a tool has a feature unless you can verify it. If unsure, say so or omit the claim.
  • One question at a time. Use AskUserQuestion for every clarification. Never batch questions — each answer may change what you ask next.

Phase 1 — Alignment

1a. Explore the codebase

Read the following in order, stopping when you have enough to write a one-paragraph characterisation:

  1. README.md and CLAUDE.md (or CLAUDE.local.md) — project intent and conventions
  2. Top-level docs/ if it exists
  3. Dependency manifests — whichever of these exist:
    • package.json / package-lock.json (Node/TS)
    • pyproject.toml / requirements.txt (Python)
    • go.mod (Go)
    • Cargo.toml (Rust)
    • Gemfile (Ruby)
  4. Recent git log: git log --oneline -20

Characterise the codebase in one paragraph: type of project, primary language/runtime, what's already installed, who it's for, what it does. Surface this so the user can correct a wrong framing before the research phase.

1b. Confirm the use case

State your understanding of what the user wants to choose a tool for and ask them to confirm or correct it. If the use case is under-specified — "I need a database", "pick a queue", "something for caching" — invoke the grilling skill to resolve the decision tree: scale, read/write mix, latency, hosting constraints, team familiarity, existing infrastructure, etc. Skip grilling if the use case is already crisp.

1c. Elicit priorities

Present a short list of common high-level priorities from references/priority-catalogue.md and ask the user to pick 3–5 that matter most to them, then rank them. Use AskUserQuestion — one question at a time. Rankings become the rubric weights in Phase 3.

Good default priorities to offer:

  • Community support
  • Maintenance activity
  • Avoiding vendor lock-in
  • Extensibility / composability
  • Ecosystem fit (language + framework)
  • License
  • Performance
  • Learning curve
  • Cost
  • Operational burden

1d. Sensible push-back

After the priorities are in, check them against what you observed in Phase 1a. If a stated priority contradicts the codebase:

  • Real conflict: "You said 'avoid vendor lock-in', but the repo already uses AWS Secrets Manager, CloudWatch, and S3. Adding a vendor-neutral queue would be swimming upstream — is that still the goal, or should we score SQS more favorably?" Ask via AskUserQuestion.
  • No conflict: say nothing. Don't manufacture friction.

Phase 2 — Research

Use WebSearch to survey the market. Aim for 4–7 candidates covering:

  • The mature/default choice (the boring, safe option)
  • 1–2 newer or popular challengers
  • At least one left-field option that could win on the user's specific priorities
  • Any option already in the dependency manifests (it may already be installed)

For each candidate, record:

Field What to capture
One-liner What it is in one sentence
Strengths Primary advantages, typical use cases
Weaknesses Known pain points, limitations
Maintenance Last release date, release cadence, # of active maintainers
License MIT / Apache / GPL / commercial / etc.
Doc URL Canonical documentation URL

Don't invent features or claims. If you can't verify something, note "unverified" or omit it.


Phase 3 — Output

Resolve the output path

mkdir -p ./ideas
DATE=$(date -u +%Y-%m-%d)
SLUG="<short-kebab-case-topic>"   # e.g. "job-queue", "vector-db", "state-manager"
BASE="./ideas/${DATE}-tech-${SLUG}"
OUT="${BASE}.md"; N=2
while [ -e "$OUT" ]; do OUT="${BASE}-${N}.md"; N=$((N+1)); done
echo "$OUT"

Write the report to the echoed path using references/report-template.md.

Report structure

The report must contain exactly these five sections in order:

  1. Context — one paragraph: codebase characterisation + the confirmed use case. If grilling ran, summarise the key answers that shaped the shortlist.

  2. Priorities & rubric — the ranked priorities, their weights (must sum to 100), and scoring anchors for each priority (what 0 / 50 / 100 looks like). See references/rubric.md for how to derive weights and write anchors.

  3. Options — one sub-section per candidate:

    ### [Tool name]
    [One-liner]
    - **Strengths**: ...
    - **Weaknesses**: ...
    - **License**: ... | **Last release**: ... | **Docs**: [url]
    
  4. Comparison table — rows = tools, columns = each priority + a final "Score /100" column. Show the raw score per priority (0–100), then the weighted total. This lets the user audit your arithmetic.

    Tool Priority 1 (W%) Priority 2 (W%) ... Score /100
    A 80 60 ... 72
  5. Ranked recommendations — tools sorted descending by compatibility score. For each:

    • Score /100
    • 2–3 sentences tying the score back to observed codebase facts and the aligned priorities
    • Flag the top recommendation prominently

    End with: "Next step: feed this decision into to-prd or open a design doc."


Quality bar (self-check before writing)

  • [ ] Characterisation is grounded in files actually read, not assumed
  • [ ] Use case was confirmed or clarified (via grilling if fuzzy)
  • [ ] Priorities were user-stated, not inferred from your own preferences
  • [ ] Rubric weights sum to 100
  • [ ] All scores are derivable from the stated anchors — no magic numbers
  • [ ] Every option has a verified doc URL
  • [ ] No invented features or unverified claims
  • [ ] Push-back was offered only when a real conflict existed
  • [ ] The report can be scanned in under 5 minutes

04 同仓库更多 Skills

O-Marsters-1997
O-Marsters-1997/my-claude-code

vault-recall

Answer the user's conceptual or technical question using their Obsidian vault as well as general knowledge. Use when the user asks a question (not a task) whose topic appears in the vault MOC digest from session start. Not for task instructions, not mid-task, and not for writing to the vault (that is to-vault).

★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

ingest

Ingest one external source (an article, course lesson, doc, PDF or URL) into the user's Obsidian vault: save the original to raw/, then build wiki/ pages per the vault's § Ingest. Use when the user types /ingest, or says "ingest this", "add this source to my wiki", "put this article/lesson in the vault as a wiki page". Works from any repo. Routing rule: someone else's words go to wiki/ (this skill); the user's own learnings and decisions go to notes/ (/to-vault).

★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

to-tickets

Breaks a source into independently-grabbable GitHub tickets. For a code feature the source is the plan (`docs/plans/<feature>.md`, from /to-plan) and every new or changed symbol lands in exactly one ticket, its signatures copied into the ticket body; a non-code feature is cut from the PRD's slices. Cuts tickets for one feature per run. If a code feature has no approved plan, offers /to-plan instead of cutting from prose. In a repo that runs command-centre, also emits `[[task]]` blocks into its config; in a plain treepad repo, emits a Batch Manifest instead so the tickets materialise as stacked worktrees.

★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

to-seams

Records an agreed-but-unlanded cross-repo interface as a seam: the file a consumer's agent gets pasted into its prompt as ground truth, plus the `[[seam]]` block command-centre reads for the retirement pointer. Use when two repos need to build against an interface neither has landed yet — "record a seam for X", "we agreed on this schema, seam it", "add a seam so Y can build against Z's new field". Halts for approval before writing either file.

Skill与智能体开发
★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

to-roadmap

Prioritises settled features into a Now / Next / Later kanban board, rendered as a self-contained ./ideas/roadmap.html. Each card is a feature, not a ticket — one card later becomes several tickets via /to-prd -> /to-plan -> /to-tickets. Boards the features in ./docs/approach.md, or the "## Accepted ideas" in ./ideas/CONTEXT.md when there is no approach doc. The approach doc is settled truth: this assigns tiers and reasons about ordering, it never re-litigates what was decided.

产品经理
★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

to-prd

Turns one feature idea into a PRD built on journeys: a one-line problem, journeys (each ending in an observable state) and delivery slices that say what is usable after each. Interviews, explores the codebase, and saves to docs/prds/<feature>.md. Covers exactly one feature: given a multi-feature source, ask which one. Reads any approach doc or ideate report as priors so it doesn't re-ask what's settled, but needs none. Starts the per-feature spine (/to-prd -> /to-plan -> /to-tickets).

产品经理
★ 0