{"id":51035953,"url":"https://github.com/giannimassi/wits","last_synced_at":"2026-06-22T06:02:11.845Z","repository":{"id":350547198,"uuid":"1207183910","full_name":"giannimassi/wits","owner":"giannimassi","description":"Composable reasoning skills for AI agents","archived":false,"fork":false,"pushed_at":"2026-04-10T20:39:35.000Z","size":80,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-10T22:20:32.269Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/giannimassi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-10T17:03:53.000Z","updated_at":"2026-04-10T20:39:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/giannimassi/wits","commit_stats":null,"previous_names":["giannimassi/wits"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/giannimassi/wits","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fwits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fwits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fwits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fwits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/giannimassi","download_url":"https://codeload.github.com/giannimassi/wits/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fwits/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34636427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-22T06:02:11.045Z","updated_at":"2026-06-22T06:02:11.838Z","avatar_url":"https://github.com/giannimassi.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wits\n\nComposable reasoning skills for AI agents. Three skills that make Claude Code (and compatible agents) think harder when it matters.\n\nFollows the [Agent Skills](https://agentskills.io) open standard. Works with Claude Code, Codex CLI, and any compatible agent.\n\n## What's in the box\n\n### `think` — 12 reasoning primitives\n\nStructured thinking tools drawn from intelligence analysis (CIA SATs), cognitive science, philosophy, and decision theory. Each primitive is a self-contained protocol that an agent can apply independently or chain together.\n\n| Primitive | What it does |\n|-----------|-------------|\n| assumption-audit | Surface and stress-test unstated assumptions |\n| disconfirmation | Actively seek evidence against your current position |\n| perspective-rotation | Look at the problem from 3+ different viewpoints |\n| pre-mortem | Assume the plan has failed. Why? |\n| hypothesis-generation | Force multiple competing explanations before committing |\n| steelman | Build the strongest version of the opposing argument |\n| decomposition | Break an overwhelming problem into independent pieces |\n| confidence-calibration | Assign probabilities and track what would change your mind |\n| causal-mapping | Trace cause-and-effect chains and feedback loops |\n| matrix-evaluation | Score options against weighted criteria |\n| base-rate-anchoring | Start from the outside view before case-specific details |\n| inversion | Solve the opposite problem (\"How would I make this worse?\") |\n\nThe agent picks the right primitive(s) automatically based on a triage table, or you can inject specific ones into subagent prompts.\n\n### `discuss` — facilitated multi-agent discussion\n\nSpawns a team of AI agents to have a structured, time-limited discussion on any topic. Includes a facilitator, reasoning cartographer, critical lens, and domain experts recruited on the fly.\n\n```\n/discuss \"Should we rewrite the billing system?\" --mode converge --duration 10m\n```\n\nRequires Claude Code (uses the Task tool for subagent dispatch).\n\n### `recruit` — expert persona recruitment\n\nCreate, cache, and reuse domain expert personas. Experts persist across sessions and are shared between skills.\n\n```\n/recruit create \"PostgreSQL migration specialist\"\n/recruit search \"database\"\n/recruit list\n```\n\n## Install\n\n```bash\n# Install all three skills\nnpx skills add giannimassi/wits@skills/think\nnpx skills add giannimassi/wits@skills/discuss\nnpx skills add giannimassi/wits@skills/recruit\n\n# Or install just the one you need\nnpx skills add giannimassi/wits@skills/think\n```\n\n## Examples\n\n**Engineering: \"Should we rewrite this in Rust?\"**\n```\nUse thinking tools to evaluate whether we should rewrite the hot path in Rust.\n```\nThe agent runs assumption-audit (what are we assuming about the performance bottleneck?), base-rate-anchoring (what % of rewrites actually deliver the expected speedup?), and pre-mortem (if we do this and it fails, why?).\n\n**Career: \"Should I take this job offer?\"**\n```\nThink carefully about whether I should leave my stable job for a Series A startup paying 30% more.\nI have a mortgage and a kid starting school next year.\n```\nTriggers perspective-rotation (your future self, your partner, the startup's investors), assumption-audit (what does \"stagnant\" really mean?), and confidence-calibration (how certain are you about the startup's runway?).\n\n**Business: \"Should we enter this market?\"**\n```\n/discuss \"Should we launch a B2B product alongside our B2C offering?\" --mode converge\n```\nSpawns domain experts (B2B SaaS, your industry, go-to-market strategy) and runs a structured discussion with synthesis and voting.\n\n**Interpersonal: \"How do I give difficult feedback?\"**\n```\nThink through how to tell my co-founder that their technical decisions are slowing us down,\nwithout damaging the relationship.\n```\nUses steelman (what's the strongest case FOR their approach?) and perspective-rotation (how do they see their own decisions?).\n\n**Research: \"Which framework should we adopt?\"**\n```\n/discuss \"React Server Components vs Astro vs Next.js for our docs site\" --size medium\n```\nRecruits framework-specific experts and runs a structured comparison with explicit trade-offs.\n\n## How it works\n\n**Think** is the core. 12 primitives, each ~200-400 tokens, composable in any combination. The agent auto-selects based on the problem type (choosing, validating, understanding, estimating, evaluating, creating) and stakes level.\n\n**Discuss** orchestrates multi-agent conversations with structured roles (facilitator, cartographer, critic, domain experts). It uses **recruit** to assemble the right experts for the topic.\n\n**Recruit** maintains a persistent expert registry. Personas are cached to disk and reused across sessions. Expert knowledge accumulates over time.\n\n## Data storage\n\nPersistent data (expert personas, discussion transcripts) is stored at:\n- `~/.local/share/wits/` (default)\n- Override with `WITS_DATA_DIR` environment variable\n\nThink is stateless and stores nothing.\n\n## Platform compatibility\n\n| Skill | Claude Code | Codex CLI | Gemini CLI |\n|-------|------------|-----------|------------|\n| think | Yes | Yes | Yes (with adapter) |\n| recruit | Yes | Yes | Yes |\n| discuss | Yes | No (needs Task tool) | No (needs Task tool) |\n\n## Roadmap\n\n**v0.1** (current) — 12 primitives, discussion framework, expert recruitment\n\n**v0.2** — expanded eval corpus, description optimization, confidence scoring improvements\n\n**v1.0** — stable release with 15+ primitives, custom primitive extension API, cross-platform discuss fallback\n\n## Uninstall\n\n```bash\nnpx skills remove think\nnpx skills remove discuss\nnpx skills remove recruit\n```\n\nTo also remove cached data:\n```bash\nrm -rf ~/.local/share/wits/\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiannimassi%2Fwits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiannimassi%2Fwits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiannimassi%2Fwits/lists"}