{"id":"catalog-babysitter-users","name":"catalog-babysitter-users","summary":"defineTaskを@a5c-ai/babysitter-sdkからインポートする公開GitHubリポジトリを見つけ、それらのリポジトリの重複を除去したカタログをdocs/repo-with-babysitter-processes.mdで管理してください。","body":"# Catalog Babysitter Users\n\nProduce a curated, deduplicated catalog of public GitHub repositories that import `defineTask` from `@a5c-ai/babysitter-sdk`, stored at `docs/repo-with-babysitter-processes.md`. Refresh the catalog in-place when re-run; do not delete entries that no longer match (mark them as \"last seen\" instead, so the catalog is additive over time).\n\n## When to use\n\n- User asks \"who's using babysitter in the wild?\", \"find repos with babysitter processes\", \"refresh the catalog\", \"update the babysitter-users list\".\n- After a release, to see whether new adopters have appeared.\n- Before a retrospective across external runs (see the sibling skill `retrospect-external-babysitter-run`).\n\n## Prerequisites\n\n- `gh` CLI installed and authenticated (`gh auth status` must be OK). GitHub code search requires an authenticated user.\n- Writable working tree (the catalog file gets updated).\n\n## Exact search\n\nSearch the literal import statement across public code:\n\n```bash\ngh search code \\\n  \"import { defineTask } from '@a5c-ai/babysitter-sdk'\" \\\n  --json repository,path,url \\\n  --limit 200\n```\n\nAlso run the double-quote variant to catch formatter differences:\n\n```bash\ngh search code \\\n  'import { defineTask } from \"@a5c-ai/babysitter-sdk\"' \\\n  --json repository,path,url \\\n  --limit 200\n```\n\nUnion the two result sets. If the CLI caps out at 100 per query, paginate by adding `language:javascript`, `language:typescript`, and `extension:js`, `extension:ts` qualifiers to split the search space.\n\n## Filtering rules (apply in order)\n\n1. Drop any hit whose `repository.name` (case-insensitive) equals `babysitter`. This excludes forks of this monorepo.\n2. Drop any hit whose `repository.nameWithOwner` starts with `a5c-ai/` -- those are first-party and already known.\n3. Drop archived repos (`repository.isArchived === true`). Enrich via `gh api repos/<owner>/<name>` if the search JSON lacks it.\n4. Dedupe by `repository.nameWithOwner` -- one entry per repo, even if multiple files match. Keep the count of matching files as evidence.\n5. Drop private-visible-as-public fluke hits (repository.visibility !== 'public').\n\n## Enrichment per surviving repo\n\nFor each repo, fetch:\n\n```bash\ngh api repos/<owner>/<name> \\\n  --jq '{nameWithOwner, description, stargazerCount: .stargazers_count, pushedAt: .pushed_at, defaultBranch: .default_branch, license: .license.spdx_id, topics}'\n```\n\nAlso record:\n\n- `processFiles`: the list of matching file paths from the search (cap at 10 per repo in the catalog; note total count if higher).\n- `firstSeen`: if the repo is new to the catalog, today's date (ISO). If already present, preserve the existing value.\n- `lastSeen`: today's date (ISO) for every repo that matched this run.\n\n## Catalog file format\n\nMaintain `docs/repo-with-babysitter-processes.md` as an additive, idempotent document. Structure:\n\n```markdown\n# Repositories Using Babysitter\n\n<!-- Generated by .claude/skills/catalog-babysitter-users. Re-run the skill to refresh. -->\n\nLast refreshed: YYYY-MM-DD\nTotal repos tracked: N\nNew this run: M\nNo longer matching: K\n\n## Active\n\n| Repository | Stars | Description | License | Pushed | Process files | First seen | Last seen |\n|------------|-------|-------------|---------|--------|---------------|------------|-----------|\n| [owner/name](https://github.com/owner/name) | 123 | ... | MIT | 2026-04-01 | 3 | 2026-03-15 | 2026-04-12 |\n\n### owner/name\n\n- Default branch: `main`\n- Topics: `a5c`, `orchestration`\n- Matching files:\n  - [`src/processes/build.js`](https://github.com/owner/name/blob/main/src/processes/build.js)\n  - ...\n\n## Stale (no longer matching at last refresh)\n\n| Repository | Last seen | Notes |\n|------------|-----------|-------|\n| ... | ... | Import removed / repo archived / ... |\n```\n\nRules when updating:\n\n- Preserve every existing entry's `firstSeen`.\n- Move a repo from Active to Stale only if it didn't match this run AND was Active last run. Include the reason if derivable (archived, 404, import removed).\n- Never delete a Stale entry; only update its `lastSeen` note if the situation changes (e.g. re-matched -> move back to Active).\n- Sort Active rows by stars descending, then by `pushedAt` descending.\n- Keep the summary counters at the top accurate.\n\n## Procedure\n\n1. Read the current `docs/repo-with-babysitter-processes.md` (if absent, treat as an empty catalog).\n2. Parse existing entries into a map keyed by `nameWithOwner`.\n3. Run both `gh search code` queries above; union results.\n4. Apply the filtering rules.\n5. Enrich each surviving repo via `gh api repos/...`.\n6. Build the merged catalog: existing entries + new entries; move absent-this-run Active entries to Stale.\n7. Write the updated markdown file.\n8. Print a short summary to the user: N total, M new, K moved to stale, top 5 new repos by stars.\n\n## Notes on rate limits\n\n`gh search code` is throttled (30 req/min for authenticated users). If the first pass returns the default cap, split by `language:` qualifier and by file `extension:` rather than spamming retries. Always include `--limit 100` (max) and paginate via qualifier-splitting, not `--page` (code search doesn't page).\n\n## After running\n\nSuggest the sibling skill `retrospect-external-babysitter-run` to go deeper on any specific entry -- \"pick a repo from the catalog and retrospect on one of its runs\".","author":"@a5c-ai","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/a5c-ai/babysitter/tree/main/.claude/skills/catalog-babysitter-users","license":"MIT","category":"document","lang":"en","tokens":1321,"stars":0,"calls30d":1,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":[]}}