feat: talk crunch

This commit is contained in:
m3tam3re
2026-07-02 20:26:03 +02:00
11 changed files with 533 additions and 324 deletions
+327 -107
View File
@@ -5,20 +5,36 @@
"anthropic": { "anthropic": {
"discovery": { "discovery": {
"agents": { "agents": {
"include": ["**/AGENT.md"], "include": [
"paths": ["agents"] "**/AGENT.md"
],
"paths": [
"agents"
]
}, },
"prompts": { "prompts": {
"include": ["**/PROMPT.md"], "include": [
"paths": ["prompts"] "**/PROMPT.md"
],
"paths": [
"prompts"
]
}, },
"skills": { "skills": {
"include": ["**/SKILL.md"], "include": [
"paths": ["skills"] "**/SKILL.md"
],
"paths": [
"skills"
]
}, },
"tools": { "tools": {
"include": ["**/TOOL.md"], "include": [
"paths": ["tools"] "**/TOOL.md"
],
"paths": [
"tools"
]
} }
}, },
"items": { "items": {
@@ -226,20 +242,36 @@
"basecamp": { "basecamp": {
"discovery": { "discovery": {
"agents": { "agents": {
"include": ["**/AGENT.md"], "include": [
"paths": ["agents"] "**/AGENT.md"
],
"paths": [
"agents"
]
}, },
"prompts": { "prompts": {
"include": ["**/PROMPT.md"], "include": [
"paths": ["prompts"] "**/PROMPT.md"
],
"paths": [
"prompts"
]
}, },
"skills": { "skills": {
"include": ["**/SKILL.md"], "include": [
"paths": ["skills"] "**/SKILL.md"
],
"paths": [
"skills"
]
}, },
"tools": { "tools": {
"include": ["**/TOOL.md"], "include": [
"paths": ["tools"] "**/TOOL.md"
],
"paths": [
"tools"
]
} }
}, },
"items": { "items": {
@@ -260,9 +292,9 @@
}, },
"tools": {} "tools": {}
}, },
"narHash": "sha256:7f068227eed664d6fbfb077eddf32901e01430441fbc2c58106aa95e45292d94", "narHash": "sha256:2bbaeab9865fca091abd0714b4d971666e3f0c83c6ee1291eda88f757791ebf6",
"ref": null, "ref": null,
"rev": "b20051d4b66b85aed61e165fedad0837ea1a5a4c", "rev": "64db1cfb966a78e1ae63f485fc4cca4704a29d3a",
"root": ".", "root": ".",
"type": "git", "type": "git",
"url": "https://github.com/basecamp/basecamp-cli", "url": "https://github.com/basecamp/basecamp-cli",
@@ -271,20 +303,36 @@
"kestra": { "kestra": {
"discovery": { "discovery": {
"agents": { "agents": {
"include": ["**/AGENT.md"], "include": [
"paths": ["agents"] "**/AGENT.md"
],
"paths": [
"agents"
]
}, },
"prompts": { "prompts": {
"include": ["**/PROMPT.md"], "include": [
"paths": ["prompts"] "**/PROMPT.md"
],
"paths": [
"prompts"
]
}, },
"skills": { "skills": {
"include": ["**/SKILL.md"], "include": [
"paths": ["skills"] "**/SKILL.md"
],
"paths": [
"skills"
]
}, },
"tools": { "tools": {
"include": ["**/TOOL.md"], "include": [
"paths": ["tools"] "**/TOOL.md"
],
"paths": [
"tools"
]
} }
}, },
"items": { "items": {
@@ -338,20 +386,36 @@
"m3ta-agents": { "m3ta-agents": {
"discovery": { "discovery": {
"agents": { "agents": {
"include": ["**/AGENT.md"], "include": [
"paths": ["agents"] "**/AGENT.md"
],
"paths": [
"agents"
]
}, },
"prompts": { "prompts": {
"include": ["**/PROMPT.md"], "include": [
"paths": ["prompts"] "**/PROMPT.md"
],
"paths": [
"prompts"
]
}, },
"skills": { "skills": {
"include": ["**/SKILL.md"], "include": [
"paths": ["skills"] "**/SKILL.md"
],
"paths": [
"skills"
]
}, },
"tools": { "tools": {
"include": ["**/TOOL.md"], "include": [
"paths": ["tools"] "**/TOOL.md"
],
"paths": [
"tools"
]
} }
}, },
"items": { "items": {
@@ -491,6 +555,17 @@
}, },
"path": "skills/excalidraw" "path": "skills/excalidraw"
}, },
"m3ta-brain": {
"entry": "skills/m3ta-brain/SKILL.md",
"licenseFiles": [],
"metadata": {
"description": "Shared Obsidian vault for human-agent collaboration. Use when: (1) Loading project context at session start (auto-recall), (2) Writing session summaries, decisions, project updates, or learning notes, (3) Searching for past decisions or project state, (4) Running nightly/weekly digest passes, (5) Creating or updating person profiles, (6) Any reference to 'the vault', 'shared brain', 'our context', 'what did we decide'. Triggers: m3ta-brain, shared brain, vault, session summary, decision note, project update, memory candidate, brain vault, auto-recall, digest, nightly pass.",
"name": "m3ta-brain",
"requires": [],
"tags": []
},
"path": "skills/m3ta-brain"
},
"mem0-memory": { "mem0-memory": {
"entry": "skills/mem0-memory/SKILL.md", "entry": "skills/mem0-memory/SKILL.md",
"licenseFiles": [], "licenseFiles": [],
@@ -579,6 +654,17 @@
}, },
"path": "skills/reflection" "path": "skills/reflection"
}, },
"shared-brain-vault": {
"entry": "skills/shared-brain-vault/SKILL.md",
"licenseFiles": [],
"metadata": {
"description": "Build and maintain a Git-synced Obsidian vault as shared working memory between user and AI agents. Use when: (1) Writing session summaries or project updates, (2) Recording decisions or learnings, (3) Adding people/profiles to the vault, (4) Populating or restructuring the vault, (5) Setting up multi-agent vault access, (6) Answering 'what did we decide' or 'where do we stand on X'. Triggers: 'shared brain', 'm3ta-brain', 'session summary', 'vault update', 'decision note', 'project status', 'what did we decide'.",
"name": "shared-brain-vault",
"requires": [],
"tags": []
},
"path": "skills/shared-brain-vault"
},
"skill-creator": { "skill-creator": {
"entry": "skills/skill-creator/SKILL.md", "entry": "skills/skill-creator/SKILL.md",
"licenseFiles": [], "licenseFiles": [],
@@ -615,9 +701,9 @@
}, },
"tools": {} "tools": {}
}, },
"narHash": "sha256:640f5c15e9124526564a5438952c3231d9fa3cbab6a4e6b1cecdf4cd280c7847", "narHash": "sha256:632df1722f82091772f12e9ec51bbf9e823a4a88bd1ce9d093d80901242861fe",
"ref": null, "ref": null,
"rev": "920c00313ae242bd93275c30131b9ab1e52ee2fb", "rev": "cd36a91440b971582fcf2d4eedf9a46fb755f6e1",
"root": ".", "root": ".",
"type": "git", "type": "git",
"url": "https://code.m3ta.dev/m3tam3re/AGENTS", "url": "https://code.m3ta.dev/m3tam3re/AGENTS",
@@ -626,20 +712,36 @@
"mattpocock": { "mattpocock": {
"discovery": { "discovery": {
"agents": { "agents": {
"include": ["**/AGENT.md"], "include": [
"paths": ["agents"] "**/AGENT.md"
],
"paths": [
"agents"
]
}, },
"prompts": { "prompts": {
"include": ["**/PROMPT.md"], "include": [
"paths": ["prompts"] "**/PROMPT.md"
],
"paths": [
"prompts"
]
}, },
"skills": { "skills": {
"include": ["**/SKILL.md"], "include": [
"paths": ["skills"] "**/SKILL.md"
],
"paths": [
"skills"
]
}, },
"tools": { "tools": {
"include": ["**/TOOL.md"], "include": [
"paths": ["tools"] "**/TOOL.md"
],
"paths": [
"tools"
]
} }
}, },
"items": { "items": {
@@ -648,7 +750,9 @@
"skills": { "skills": {
"caveman": { "caveman": {
"entry": "skills/productivity/caveman/SKILL.md", "entry": "skills/productivity/caveman/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": ">", "description": ">",
"name": "caveman", "name": "caveman",
@@ -659,7 +763,9 @@
}, },
"design-an-interface": { "design-an-interface": {
"entry": "skills/deprecated/design-an-interface/SKILL.md", "entry": "skills/deprecated/design-an-interface/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions \"design it twice\".", "description": "Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions \"design it twice\".",
"name": "design-an-interface", "name": "design-an-interface",
@@ -670,7 +776,9 @@
}, },
"diagnose": { "diagnose": {
"entry": "skills/engineering/diagnose/SKILL.md", "entry": "skills/engineering/diagnose/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says \"diagnose this\" / \"debug this\", reports a bug, says something is broken/throwing/failing, or describes a performance regression.", "description": "Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says \"diagnose this\" / \"debug this\", reports a bug, says something is broken/throwing/failing, or describes a performance regression.",
"name": "diagnose", "name": "diagnose",
@@ -681,7 +789,9 @@
}, },
"edit-article": { "edit-article": {
"entry": "skills/personal/edit-article/SKILL.md", "entry": "skills/personal/edit-article/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.", "description": "Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.",
"name": "edit-article", "name": "edit-article",
@@ -692,7 +802,9 @@
}, },
"git-guardrails-claude-code": { "git-guardrails-claude-code": {
"entry": "skills/misc/git-guardrails-claude-code/SKILL.md", "entry": "skills/misc/git-guardrails-claude-code/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.", "description": "Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.",
"name": "git-guardrails-claude-code", "name": "git-guardrails-claude-code",
@@ -703,7 +815,9 @@
}, },
"grill-me": { "grill-me": {
"entry": "skills/productivity/grill-me/SKILL.md", "entry": "skills/productivity/grill-me/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\".", "description": "Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\".",
"name": "grill-me", "name": "grill-me",
@@ -714,7 +828,9 @@
}, },
"grill-with-docs": { "grill-with-docs": {
"entry": "skills/engineering/grill-with-docs/SKILL.md", "entry": "skills/engineering/grill-with-docs/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.", "description": "Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.",
"name": "grill-with-docs", "name": "grill-with-docs",
@@ -725,7 +841,9 @@
}, },
"handoff": { "handoff": {
"entry": "skills/productivity/handoff/SKILL.md", "entry": "skills/productivity/handoff/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Compact the current conversation into a handoff document for another agent to pick up.", "description": "Compact the current conversation into a handoff document for another agent to pick up.",
"name": "handoff", "name": "handoff",
@@ -736,7 +854,9 @@
}, },
"improve-codebase-architecture": { "improve-codebase-architecture": {
"entry": "skills/engineering/improve-codebase-architecture/SKILL.md", "entry": "skills/engineering/improve-codebase-architecture/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.", "description": "Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.",
"name": "improve-codebase-architecture", "name": "improve-codebase-architecture",
@@ -747,7 +867,9 @@
}, },
"migrate-to-shoehorn": { "migrate-to-shoehorn": {
"entry": "skills/misc/migrate-to-shoehorn/SKILL.md", "entry": "skills/misc/migrate-to-shoehorn/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.", "description": "Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.",
"name": "migrate-to-shoehorn", "name": "migrate-to-shoehorn",
@@ -758,7 +880,9 @@
}, },
"obsidian-vault": { "obsidian-vault": {
"entry": "skills/personal/obsidian-vault/SKILL.md", "entry": "skills/personal/obsidian-vault/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.", "description": "Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.",
"name": "obsidian-vault", "name": "obsidian-vault",
@@ -769,7 +893,9 @@
}, },
"prototype": { "prototype": {
"entry": "skills/engineering/prototype/SKILL.md", "entry": "skills/engineering/prototype/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Build a throwaway prototype to flesh out a design before committing to it. Routes between two branches — a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route. Use when the user wants to prototype, sanity-check a data model or state machine, mock up a UI, explore design options, or says \"prototype this\", \"let me play with it\", \"try a few designs\".", "description": "Build a throwaway prototype to flesh out a design before committing to it. Routes between two branches — a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route. Use when the user wants to prototype, sanity-check a data model or state machine, mock up a UI, explore design options, or says \"prototype this\", \"let me play with it\", \"try a few designs\".",
"name": "prototype", "name": "prototype",
@@ -780,7 +906,9 @@
}, },
"qa": { "qa": {
"entry": "skills/deprecated/qa/SKILL.md", "entry": "skills/deprecated/qa/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Interactive QA session where user reports bugs or issues conversationally, and the agent files GitHub issues. Explores the codebase in the background for context and domain language. Use when user wants to report bugs, do QA, file issues conversationally, or mentions \"QA session\".", "description": "Interactive QA session where user reports bugs or issues conversationally, and the agent files GitHub issues. Explores the codebase in the background for context and domain language. Use when user wants to report bugs, do QA, file issues conversationally, or mentions \"QA session\".",
"name": "qa", "name": "qa",
@@ -791,7 +919,9 @@
}, },
"request-refactor-plan": { "request-refactor-plan": {
"entry": "skills/deprecated/request-refactor-plan/SKILL.md", "entry": "skills/deprecated/request-refactor-plan/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Create a detailed refactor plan with tiny commits via user interview, then file it as a GitHub issue. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps.", "description": "Create a detailed refactor plan with tiny commits via user interview, then file it as a GitHub issue. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps.",
"name": "request-refactor-plan", "name": "request-refactor-plan",
@@ -802,7 +932,9 @@
}, },
"review": { "review": {
"entry": "skills/in-progress/review/SKILL.md", "entry": "skills/in-progress/review/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/PRD asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to \"review since X\".", "description": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/PRD asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to \"review since X\".",
"name": "review", "name": "review",
@@ -813,7 +945,9 @@
}, },
"scaffold-exercises": { "scaffold-exercises": {
"entry": "skills/misc/scaffold-exercises/SKILL.md", "entry": "skills/misc/scaffold-exercises/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.", "description": "Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.",
"name": "scaffold-exercises", "name": "scaffold-exercises",
@@ -824,7 +958,9 @@
}, },
"setup-matt-pocock-skills": { "setup-matt-pocock-skills": {
"entry": "skills/engineering/setup-matt-pocock-skills/SKILL.md", "entry": "skills/engineering/setup-matt-pocock-skills/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub or local markdown), triage label vocabulary, and domain doc layout. Run before first use of `to-issues`, `to-prd`, `triage`, `diagnose`, `tdd`, `improve-codebase-architecture`, or `zoom-out` — or if those skills appear to be missing context about the issue tracker, triage labels, or domain docs.", "description": "Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub or local markdown), triage label vocabulary, and domain doc layout. Run before first use of `to-issues`, `to-prd`, `triage`, `diagnose`, `tdd`, `improve-codebase-architecture`, or `zoom-out` — or if those skills appear to be missing context about the issue tracker, triage labels, or domain docs.",
"name": "setup-matt-pocock-skills", "name": "setup-matt-pocock-skills",
@@ -835,7 +971,9 @@
}, },
"setup-pre-commit": { "setup-pre-commit": {
"entry": "skills/misc/setup-pre-commit/SKILL.md", "entry": "skills/misc/setup-pre-commit/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.", "description": "Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.",
"name": "setup-pre-commit", "name": "setup-pre-commit",
@@ -846,7 +984,9 @@
}, },
"tdd": { "tdd": {
"entry": "skills/engineering/tdd/SKILL.md", "entry": "skills/engineering/tdd/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions \"red-green-refactor\", wants integration tests, or asks for test-first development.", "description": "Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions \"red-green-refactor\", wants integration tests, or asks for test-first development.",
"name": "tdd", "name": "tdd",
@@ -856,19 +996,23 @@
"path": "skills/engineering/tdd" "path": "skills/engineering/tdd"
}, },
"teach": { "teach": {
"entry": "skills/in-progress/teach/SKILL.md", "entry": "skills/productivity/teach/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Teach the user a new skill or concept, within this workspace.", "description": "Teach the user a new skill or concept, within this workspace.",
"name": "teach", "name": "teach",
"requires": [], "requires": [],
"tags": [] "tags": []
}, },
"path": "skills/in-progress/teach" "path": "skills/productivity/teach"
}, },
"to-issues": { "to-issues": {
"entry": "skills/engineering/to-issues/SKILL.md", "entry": "skills/engineering/to-issues/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Break a plan, spec, or PRD into independently-grabbable issues on the project issue tracker using tracer-bullet vertical slices. Use when user wants to convert a plan into issues, create implementation tickets, or break down work into issues.", "description": "Break a plan, spec, or PRD into independently-grabbable issues on the project issue tracker using tracer-bullet vertical slices. Use when user wants to convert a plan into issues, create implementation tickets, or break down work into issues.",
"name": "to-issues", "name": "to-issues",
@@ -879,7 +1023,9 @@
}, },
"to-prd": { "to-prd": {
"entry": "skills/engineering/to-prd/SKILL.md", "entry": "skills/engineering/to-prd/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Turn the current conversation context into a PRD and publish it to the project issue tracker. Use when user wants to create a PRD from the current context.", "description": "Turn the current conversation context into a PRD and publish it to the project issue tracker. Use when user wants to create a PRD from the current context.",
"name": "to-prd", "name": "to-prd",
@@ -890,7 +1036,9 @@
}, },
"triage": { "triage": {
"entry": "skills/engineering/triage/SKILL.md", "entry": "skills/engineering/triage/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Triage issues through a state machine driven by triage roles. Use when user wants to create an issue, triage issues, review incoming bugs or feature requests, prepare issues for an AFK agent, or manage issue workflow.", "description": "Triage issues through a state machine driven by triage roles. Use when user wants to create an issue, triage issues, review incoming bugs or feature requests, prepare issues for an AFK agent, or manage issue workflow.",
"name": "triage", "name": "triage",
@@ -901,7 +1049,9 @@
}, },
"ubiquitous-language": { "ubiquitous-language": {
"entry": "skills/deprecated/ubiquitous-language/SKILL.md", "entry": "skills/deprecated/ubiquitous-language/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions \"domain model\" or \"DDD\".", "description": "Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions \"domain model\" or \"DDD\".",
"name": "ubiquitous-language", "name": "ubiquitous-language",
@@ -912,7 +1062,9 @@
}, },
"write-a-skill": { "write-a-skill": {
"entry": "skills/productivity/write-a-skill/SKILL.md", "entry": "skills/productivity/write-a-skill/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.", "description": "Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.",
"name": "write-a-skill", "name": "write-a-skill",
@@ -923,7 +1075,9 @@
}, },
"writing-beats": { "writing-beats": {
"entry": "skills/in-progress/writing-beats/SKILL.md", "entry": "skills/in-progress/writing-beats/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.", "description": "Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.",
"name": "writing-beats", "name": "writing-beats",
@@ -934,7 +1088,9 @@
}, },
"writing-fragments": { "writing-fragments": {
"entry": "skills/in-progress/writing-fragments/SKILL.md", "entry": "skills/in-progress/writing-fragments/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Grilling session that mines the user for fragments — heterogeneous nuggets of writing (claims, vignettes, sharp sentences, half-thoughts) — and appends them to a single document as raw material for a future article. Use when the user wants to develop ideas before imposing structure, or mentions \"fragments\", \"ideate\", or \"raw material\" for writing.", "description": "Grilling session that mines the user for fragments — heterogeneous nuggets of writing (claims, vignettes, sharp sentences, half-thoughts) — and appends them to a single document as raw material for a future article. Use when the user wants to develop ideas before imposing structure, or mentions \"fragments\", \"ideate\", or \"raw material\" for writing.",
"name": "writing-fragments", "name": "writing-fragments",
@@ -945,7 +1101,9 @@
}, },
"writing-shape": { "writing-shape": {
"entry": "skills/in-progress/writing-shape/SKILL.md", "entry": "skills/in-progress/writing-shape/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.", "description": "Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.",
"name": "writing-shape", "name": "writing-shape",
@@ -956,7 +1114,9 @@
}, },
"zoom-out": { "zoom-out": {
"entry": "skills/engineering/zoom-out/SKILL.md", "entry": "skills/engineering/zoom-out/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.", "description": "Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.",
"name": "zoom-out", "name": "zoom-out",
@@ -968,9 +1128,9 @@
}, },
"tools": {} "tools": {}
}, },
"narHash": "sha256:e61c575015dca998709776014f52317e29b49aca42659b635dbc69fb60a7f9e1", "narHash": "sha256:f0f009c64fe1572fbfade479e4829f2fd4499f703e7110c1387a5e05bfe00b9e",
"ref": null, "ref": null,
"rev": "e3b90b5238f38cdea5996e16861dcae28ef52eda", "rev": "694fa30311e02c2639942308513555e61ee84a6f",
"root": ".", "root": ".",
"type": "git", "type": "git",
"url": "https://github.com/mattpocock/skills", "url": "https://github.com/mattpocock/skills",
@@ -979,20 +1139,36 @@
"superpowers": { "superpowers": {
"discovery": { "discovery": {
"agents": { "agents": {
"include": ["**/AGENT.md"], "include": [
"paths": ["agents"] "**/AGENT.md"
],
"paths": [
"agents"
]
}, },
"prompts": { "prompts": {
"include": ["**/PROMPT.md"], "include": [
"paths": ["prompts"] "**/PROMPT.md"
],
"paths": [
"prompts"
]
}, },
"skills": { "skills": {
"include": ["**/SKILL.md"], "include": [
"paths": ["skills"] "**/SKILL.md"
],
"paths": [
"skills"
]
}, },
"tools": { "tools": {
"include": ["**/TOOL.md"], "include": [
"paths": ["tools"] "**/TOOL.md"
],
"paths": [
"tools"
]
} }
}, },
"items": { "items": {
@@ -1001,7 +1177,9 @@
"skills": { "skills": {
"brainstorming": { "brainstorming": {
"entry": "skills/brainstorming/SKILL.md", "entry": "skills/brainstorming/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.", "description": "You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.",
"name": "brainstorming", "name": "brainstorming",
@@ -1012,7 +1190,9 @@
}, },
"dispatching-parallel-agents": { "dispatching-parallel-agents": {
"entry": "skills/dispatching-parallel-agents/SKILL.md", "entry": "skills/dispatching-parallel-agents/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies", "description": "Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies",
"name": "dispatching-parallel-agents", "name": "dispatching-parallel-agents",
@@ -1023,7 +1203,9 @@
}, },
"executing-plans": { "executing-plans": {
"entry": "skills/executing-plans/SKILL.md", "entry": "skills/executing-plans/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when you have a written implementation plan to execute in a separate session with review checkpoints", "description": "Use when you have a written implementation plan to execute in a separate session with review checkpoints",
"name": "executing-plans", "name": "executing-plans",
@@ -1034,7 +1216,9 @@
}, },
"finishing-a-development-branch": { "finishing-a-development-branch": {
"entry": "skills/finishing-a-development-branch/SKILL.md", "entry": "skills/finishing-a-development-branch/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup", "description": "Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup",
"name": "finishing-a-development-branch", "name": "finishing-a-development-branch",
@@ -1045,7 +1229,9 @@
}, },
"receiving-code-review": { "receiving-code-review": {
"entry": "skills/receiving-code-review/SKILL.md", "entry": "skills/receiving-code-review/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation", "description": "Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation",
"name": "receiving-code-review", "name": "receiving-code-review",
@@ -1056,7 +1242,9 @@
}, },
"requesting-code-review": { "requesting-code-review": {
"entry": "skills/requesting-code-review/SKILL.md", "entry": "skills/requesting-code-review/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when completing tasks, implementing major features, or before merging to verify work meets requirements", "description": "Use when completing tasks, implementing major features, or before merging to verify work meets requirements",
"name": "requesting-code-review", "name": "requesting-code-review",
@@ -1067,7 +1255,9 @@
}, },
"subagent-driven-development": { "subagent-driven-development": {
"entry": "skills/subagent-driven-development/SKILL.md", "entry": "skills/subagent-driven-development/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when executing implementation plans with independent tasks in the current session", "description": "Use when executing implementation plans with independent tasks in the current session",
"name": "subagent-driven-development", "name": "subagent-driven-development",
@@ -1078,7 +1268,9 @@
}, },
"systematic-debugging": { "systematic-debugging": {
"entry": "skills/systematic-debugging/SKILL.md", "entry": "skills/systematic-debugging/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes", "description": "Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes",
"name": "systematic-debugging", "name": "systematic-debugging",
@@ -1089,7 +1281,9 @@
}, },
"test-driven-development": { "test-driven-development": {
"entry": "skills/test-driven-development/SKILL.md", "entry": "skills/test-driven-development/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when implementing any feature or bugfix, before writing implementation code", "description": "Use when implementing any feature or bugfix, before writing implementation code",
"name": "test-driven-development", "name": "test-driven-development",
@@ -1100,7 +1294,9 @@
}, },
"using-git-worktrees": { "using-git-worktrees": {
"entry": "skills/using-git-worktrees/SKILL.md", "entry": "skills/using-git-worktrees/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback", "description": "Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback",
"name": "using-git-worktrees", "name": "using-git-worktrees",
@@ -1111,7 +1307,9 @@
}, },
"using-superpowers": { "using-superpowers": {
"entry": "skills/using-superpowers/SKILL.md", "entry": "skills/using-superpowers/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions", "description": "Use when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions",
"name": "using-superpowers", "name": "using-superpowers",
@@ -1122,7 +1320,9 @@
}, },
"verification-before-completion": { "verification-before-completion": {
"entry": "skills/verification-before-completion/SKILL.md", "entry": "skills/verification-before-completion/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always", "description": "Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always",
"name": "verification-before-completion", "name": "verification-before-completion",
@@ -1133,7 +1333,9 @@
}, },
"writing-plans": { "writing-plans": {
"entry": "skills/writing-plans/SKILL.md", "entry": "skills/writing-plans/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when you have a spec or requirements for a multi-step task, before touching code", "description": "Use when you have a spec or requirements for a multi-step task, before touching code",
"name": "writing-plans", "name": "writing-plans",
@@ -1144,7 +1346,9 @@
}, },
"writing-skills": { "writing-skills": {
"entry": "skills/writing-skills/SKILL.md", "entry": "skills/writing-skills/SKILL.md",
"licenseFiles": ["LICENSE"], "licenseFiles": [
"LICENSE"
],
"metadata": { "metadata": {
"description": "Use when creating new skills, editing existing skills, or verifying skills work before deployment", "description": "Use when creating new skills, editing existing skills, or verifying skills work before deployment",
"name": "writing-skills", "name": "writing-skills",
@@ -1167,20 +1371,36 @@
"vercel": { "vercel": {
"discovery": { "discovery": {
"agents": { "agents": {
"include": ["**/AGENT.md"], "include": [
"paths": ["agents"] "**/AGENT.md"
],
"paths": [
"agents"
]
}, },
"prompts": { "prompts": {
"include": ["**/PROMPT.md"], "include": [
"paths": ["prompts"] "**/PROMPT.md"
],
"paths": [
"prompts"
]
}, },
"skills": { "skills": {
"include": ["**/SKILL.md"], "include": [
"paths": ["skills"] "**/SKILL.md"
],
"paths": [
"skills"
]
}, },
"tools": { "tools": {
"include": ["**/TOOL.md"], "include": [
"paths": ["tools"] "**/TOOL.md"
],
"paths": [
"tools"
]
} }
}, },
"items": { "items": {
Generated
+46 -103
View File
@@ -23,16 +23,14 @@
}, },
"agent-lib": { "agent-lib": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["nixpkgs"]
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1780736323, "lastModified": 1781348569,
"narHash": "sha256-b4CfjbWTT+5Z0XBI2/W2DnybwkYVwLxghCwXVmw9+Iw=", "narHash": "sha256-1BJtmKSqtD0CD753ZE37RgxvCJK6Iw3iKLDDaS8trY4=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "b0c832c9e02d8b3d8ad091f022c859382a037afd", "rev": "75a2ed2533b4d6d8e4a34acd37e83d98d81a5fb0",
"revCount": 26, "revCount": 30,
"type": "git", "type": "git",
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib" "url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib"
}, },
@@ -46,11 +44,11 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1780133320, "lastModified": 1782789853,
"narHash": "sha256-8AiN9tV9PBb5xblJiPlhumBbKj61qLjzqXXFtkj3vvY=", "narHash": "sha256-LEmctqYRQRq0wB1MoS+IVr/0/uu/0nKahqNeJBGTjJ8=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "920c00313ae242bd93275c30131b9ab1e52ee2fb", "rev": "cd36a91440b971582fcf2d4eedf9a46fb755f6e1",
"revCount": 88, "revCount": 92,
"type": "git", "type": "git",
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/AGENTS" "url": "ssh://gitea@code.m3ta.dev/m3tam3re/AGENTS"
}, },
@@ -93,10 +91,7 @@
}, },
"basecamp": { "basecamp": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["m3ta-nixpkgs", "nixpkgs"]
"m3ta-nixpkgs",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1774505501, "lastModified": 1774505501,
@@ -115,10 +110,7 @@
}, },
"darwin": { "darwin": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["agenix", "nixpkgs"]
"agenix",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1744478979, "lastModified": 1744478979,
@@ -137,9 +129,7 @@
}, },
"dms": { "dms": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["nixpkgs"],
"nixpkgs"
],
"quickshell": "quickshell" "quickshell": "quickshell"
}, },
"locked": { "locked": {
@@ -159,16 +149,14 @@
}, },
"dms-plugin-registry": { "dms-plugin-registry": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["nixpkgs"]
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1780281921, "lastModified": 1782780764,
"narHash": "sha256-ZDsDl7lTOfM+Le2l6gDyEP3o+KHR3TUCkuxd9hQaLro=", "narHash": "sha256-Q2wPFsuDo1y6neZ3ttxxOOItupg/4+mPkyAZbC0+wfw=",
"owner": "AvengeMedia", "owner": "AvengeMedia",
"repo": "dms-plugin-registry", "repo": "dms-plugin-registry",
"rev": "ee4eeacce5a7041ed39f8cd7fe64b6e0e888e73b", "rev": "9fa716427ab5905845b2a10a01d67bee0b1e4c4b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -179,10 +167,7 @@
}, },
"flake-parts": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": ["hermes-agent", "nixpkgs"]
"hermes-agent",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1772408722, "lastModified": 1772408722,
@@ -200,10 +185,7 @@
}, },
"flake-parts_2": { "flake-parts_2": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": ["nur", "nixpkgs"]
"nur",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1733312601, "lastModified": 1733312601,
@@ -222,20 +204,18 @@
"hermes-agent": { "hermes-agent": {
"inputs": { "inputs": {
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": [ "nixpkgs": ["nixpkgs"],
"nixpkgs"
],
"npm-lockfile-fix": "npm-lockfile-fix", "npm-lockfile-fix": "npm-lockfile-fix",
"pyproject-build-systems": "pyproject-build-systems", "pyproject-build-systems": "pyproject-build-systems",
"pyproject-nix": "pyproject-nix_2", "pyproject-nix": "pyproject-nix_2",
"uv2nix": "uv2nix_2" "uv2nix": "uv2nix_2"
}, },
"locked": { "locked": {
"lastModified": 1780733287, "lastModified": 1782794050,
"narHash": "sha256-cMm2PL8ymiizMnK2JAHVSMCfPsMAis2OcIbdYwR3ZSs=", "narHash": "sha256-+qKEwIhTkml3DNSmIvGFJyssW9ZXTp78KGclFdcDvX8=",
"owner": "NousResearch", "owner": "NousResearch",
"repo": "hermes-agent", "repo": "hermes-agent",
"rev": "5af899c7ca753a56a4daeb6fa6ff3cbb113234b8", "rev": "972b1620906a1b80772c2f67492ad50b3c83f048",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -246,10 +226,7 @@
}, },
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["agenix", "nixpkgs"]
"agenix",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1745494811, "lastModified": 1745494811,
@@ -267,16 +244,14 @@
}, },
"home-manager_2": { "home-manager_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["nixpkgs"]
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1780099287, "lastModified": 1782749631,
"narHash": "sha256-efIPwVGtIWIjWcznhaop6XN6HxnOL8800hF6CBNvlqQ=", "narHash": "sha256-slFTUgDy0KTPA4LBAmC/9SngDq8GCPdX+ZR0yQHHN1E=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "7d8127d308c3fb9664f7e643eec944be74ebb37d", "rev": "5d72a29fc36ac21adae6ae35568fe5ee6700850f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -289,9 +264,7 @@
"inputs": { "inputs": {
"agents": "agents_2", "agents": "agents_2",
"basecamp": "basecamp", "basecamp": "basecamp",
"nixpkgs": [ "nixpkgs": ["nixpkgs"],
"nixpkgs"
],
"nixpkgs-master": "nixpkgs-master", "nixpkgs-master": "nixpkgs-master",
"openspec": "openspec" "openspec": "openspec"
}, },
@@ -393,11 +366,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1779560665, "lastModified": 1782723713,
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=", "narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", "rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -409,11 +382,11 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1779560665, "lastModified": 1782723713,
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=", "narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", "rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -425,10 +398,7 @@
}, },
"npm-lockfile-fix": { "npm-lockfile-fix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["hermes-agent", "nixpkgs"]
"hermes-agent",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1775903712, "lastModified": 1775903712,
@@ -450,11 +420,11 @@
"nixpkgs": "nixpkgs_4" "nixpkgs": "nixpkgs_4"
}, },
"locked": { "locked": {
"lastModified": 1780290189, "lastModified": 1782796354,
"narHash": "sha256-2igu6l2/d4RikYmC/SsykZ1jF1e4+Df+2qWPYjq2xto=", "narHash": "sha256-zHZEX+twYRO4n369Nrk21DBb519JZCGJLHBo/trhHO0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "8b6210602dcbd4409ab1c3453ea0c292637c2799", "rev": "df4f4323fe161a8bab3aafa2d067ff9d7e223a67",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -465,10 +435,7 @@
}, },
"openspec": { "openspec": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["m3ta-nixpkgs", "nixpkgs"]
"m3ta-nixpkgs",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1782291243, "lastModified": 1782291243,
@@ -486,10 +453,7 @@
}, },
"pyproject-build-systems": { "pyproject-build-systems": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["hermes-agent", "nixpkgs"],
"hermes-agent",
"nixpkgs"
],
"pyproject-nix": "pyproject-nix", "pyproject-nix": "pyproject-nix",
"uv2nix": "uv2nix" "uv2nix": "uv2nix"
}, },
@@ -509,11 +473,7 @@
}, },
"pyproject-nix": { "pyproject-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["hermes-agent", "pyproject-build-systems", "nixpkgs"]
"hermes-agent",
"pyproject-build-systems",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1769936401, "lastModified": 1769936401,
@@ -531,10 +491,7 @@
}, },
"pyproject-nix_2": { "pyproject-nix_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["hermes-agent", "nixpkgs"]
"hermes-agent",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1772865871, "lastModified": 1772865871,
@@ -552,11 +509,7 @@
}, },
"pyproject-nix_3": { "pyproject-nix_3": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["hermes-agent", "uv2nix", "nixpkgs"]
"hermes-agent",
"uv2nix",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1771518446, "lastModified": 1771518446,
@@ -574,10 +527,7 @@
}, },
"quickshell": { "quickshell": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["dms", "nixpkgs"]
"dms",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1776854048, "lastModified": 1776854048,
@@ -626,11 +576,7 @@
}, },
"uv2nix": { "uv2nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["hermes-agent", "pyproject-build-systems", "nixpkgs"],
"hermes-agent",
"pyproject-build-systems",
"nixpkgs"
],
"pyproject-nix": [ "pyproject-nix": [
"hermes-agent", "hermes-agent",
"pyproject-build-systems", "pyproject-build-systems",
@@ -653,10 +599,7 @@
}, },
"uv2nix_2": { "uv2nix_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["hermes-agent", "nixpkgs"],
"hermes-agent",
"nixpkgs"
],
"pyproject-nix": "pyproject-nix_3" "pyproject-nix": "pyproject-nix_3"
}, },
"locked": { "locked": {
+1 -7
View File
@@ -47,13 +47,7 @@
nur.url = "github:nix-community/NUR"; nur.url = "github:nix-community/NUR";
}; };
outputs = { outputs = {self, ...} @ inputs: {
self,
nixpkgs,
...
} @ inputs: let
lib = nixpkgs.lib;
in {
# Home-Manager modules — import in nixos-config via: # Home-Manager modules — import in nixos-config via:
# imports = [ inputs.m3ta-home.homeManagerModules.default ]; # imports = [ inputs.m3ta-home.homeManagerModules.default ];
homeManagerModules = import ./modules { homeManagerModules = import ./modules {
+13 -2
View File
@@ -1,5 +1,16 @@
# lib/default.nix — Entry point for m3ta-home library functions. # lib/default.nix — Entry point for m3ta-home library functions.
# #
# Called by flake.nix: import ./lib { inherit inputs; selfPath = self.outPath; } # Called by flake.nix: import ./lib { inherit inputs; selfPath = self.outPath; }
# Re-exports mkHome and future library functions. # Re-exports mkHome and focused helpers for consumers that should not depend on
{inputs, selfPath}: import ./mkHome.nix {inherit inputs selfPath;} # m3ta-home's implementation inputs directly.
{
inputs,
selfPath,
}: let
mkHomeLib = import ./mkHome.nix {inherit inputs selfPath;};
in
mkHomeLib
// {
mkHermesSkillsDir = {system, ...} @ args:
inputs.agent-lib.lib.${system}.mkHermesSkillsDir (builtins.removeAttrs args ["system"]);
}
+7 -4
View File
@@ -6,6 +6,8 @@
}: }:
with lib; let with lib; let
cfg = config.base.shell.nushell; cfg = config.base.shell.nushell;
# User-specific secrets file from agenix, resolved at build time.
secretsFile = "/run/agenix/${config.home.username}-secrets";
in { in {
# Enabled by default — base modules are always-on. # Enabled by default — base modules are always-on.
options.base.shell.nushell.enable = (mkEnableOption "enable nushell") // {default = true;}; options.base.shell.nushell.enable = (mkEnableOption "enable nushell") // {default = true;};
@@ -42,15 +44,16 @@ in {
| load-env | load-env
} }
# Load m3tam3re secrets from agenix. The secret file is Nushell code # Load user-specific secrets from agenix. The secret file is Nushell code
# containing a `load-env { ... }` block, not KEY=VALUE lines. # containing a `load-env { ... }` block, not KEY=VALUE lines.
# `source` resolves literal paths at parse time, so use `null` when absent. # `source` resolves literal paths at parse time, so use `null` when absent.
const m3tam3re_secrets_file = if ("/run/agenix/m3tam3re-secrets" | path exists) { # Path is resolved at Nix build time via config.home.username.
"/run/agenix/m3tam3re-secrets" const user_secrets_file = if ("${secretsFile}" | path exists) {
"${secretsFile}"
} else { } else {
null null
} }
source $m3tam3re_secrets_file source $user_secrets_file
''; '';
configFile.text = '' configFile.text = ''
+1 -1
View File
@@ -71,7 +71,7 @@
(element-desktop.override { (element-desktop.override {
commandLineArgs = "--password-store=gnome-libsecret"; commandLineArgs = "--password-store=gnome-libsecret";
}) })
m3taHomeInputs.hermes-agent.packages.${pkgs.system}.desktop m3taHomeInputs.hermes-agent.packages.${pkgs.stdenv.hostPlatform.system}.desktop
launch-webapp launch-webapp
file-roller file-roller
gsettings-desktop-schemas gsettings-desktop-schemas
+42 -4
View File
@@ -19,7 +19,7 @@ in {
source = [ source = [
"~/.config/hypr/dms/colors.conf" "~/.config/hypr/dms/colors.conf"
"~/.config/hypr/dms/layout.conf" "~/.config/hypr/dms/layout.conf"
"~/.config/hypr/monitors.conf" "~/.config/hypr/dms/outputs.conf"
]; ];
exec-once = [ exec-once = [
"vibetyper" "vibetyper"
@@ -40,7 +40,7 @@ in {
]; ];
input = { input = {
kb_layout = "de,us"; kb_layout = "us";
kb_variant = ""; kb_variant = "";
kb_model = ""; kb_model = "";
kb_rules = ""; kb_rules = "";
@@ -97,13 +97,47 @@ in {
}; };
device = [ device = [
# Alle normalen Keyboards explizit auf de setzen:
{ {
name = "zsa-technology-labs-moonlander-mark-i"; name = "video-bus";
kb_layout = "us"; kb_layout = "de,us";
kb_options = "ctrl:nocaps";
}
{
name = "razer-razer-pro-click-v2-vertical-edition-keyboard";
kb_layout = "de,us";
kb_options = "ctrl:nocaps";
}
{
name = "razer-razer-pro-click-v2-vertical-edition-1";
kb_layout = "de,us";
kb_options = "ctrl:nocaps";
}
{
name = "vibe-typer-virtual-keyboard";
kb_layout = "de";
kb_options = "ctrl:nocaps";
} }
{ {
name = "keychron-keychron-k7"; name = "keychron-keychron-k7";
kb_layout = "us"; kb_layout = "us";
kb_options = "ctrl:nocaps";
}
# Moonlander Sub-Devices bleiben us (erben global)
{
name = "zsa-technology-labs-moonlander-mark-i-consumer-control";
kb_layout = "us";
kb_options = "ctrl:nocaps";
}
{
name = "zsa-technology-labs-moonlander-mark-i-keyboard";
kb_layout = "us";
kb_options = "ctrl:nocaps";
}
{
name = "zsa-technology-labs-moonlander-mark-i-system-control";
kb_layout = "us";
kb_options = "ctrl:nocaps";
} }
]; ];
@@ -146,6 +180,10 @@ in {
"match:initial_title .*streamlabs.com.*, no_shadow on" "match:initial_title .*streamlabs.com.*, no_shadow on"
"match:initial_title .*streamlabs.com.*, no_blur on" "match:initial_title .*streamlabs.com.*, no_blur on"
"match:class ^vibe-typer$, match:title ^Recording Indicator$, no_blur on" "match:class ^vibe-typer$, match:title ^Recording Indicator$, no_blur on"
"match:class ^vibe-typer$, match:title ^Recording Indicator$, no_shadow on"
"match:class ^vibe-typer$, match:title ^Recording Indicator$, no_anim on"
"match:class ^vibe-typer$, match:title ^Recording Indicator$, border_size 0"
"match:class ^vibe-typer$, match:title ^Recording Indicator$, no_focus on"
"border_color rgb(ffffff), match:xwayland 1" "border_color rgb(ffffff), match:xwayland 1"
]; ];
+3 -2
View File
@@ -64,9 +64,9 @@
home.packages = with pkgs; [ home.packages = with pkgs; [
agenix-cli agenix-cli
agent-browser agent-browser
crunch m3taHomeInputs.agent-lib.packages.${pkgs.stdenv.hostPlatform.system}.agent-lib-cli
m3taHomeInputs.agent-lib.packages.${pkgs.system}.agent-lib-cli
beads beads
crunch
pi-coding-agent pi-coding-agent
(qmd.override { (qmd.override {
vulkanSupport = videoDrivers == ["amdgpu"]; vulkanSupport = videoDrivers == ["amdgpu"];
@@ -75,6 +75,7 @@
# opencode-desktop # opencode-desktop
openshell openshell
openspec openspec
openwork
talk talk
]; ];
} }
+13 -14
View File
@@ -4,25 +4,25 @@
ohMyOpencodeSettings = { ohMyOpencodeSettings = {
agents = { agents = {
sisyphus.model = "litellm/claude-opus-4-6"; sisyphus.model = "litellm/claude-opus-4-8";
oracle.model = "litellm/claude-sonnet-4-6"; oracle.model = "litellm/claude-sonnet-4-6";
librarian.model = "litellm/claude-sonnet-4-6"; librarian.model = "litellm/claude-sonnet-4-6";
explore.model = "litellm/claude-haiku-4-5"; explore.model = "litellm/claude-haiku-4-5";
multimodal-looker.model = "litellm/gpt-5.3-codex"; multimodal-looker.model = "litellm/gpt-5.3-codex";
prometheus.model = "litellm/claude-opus-4-6"; prometheus.model = "litellm/claude-opus-4-8";
metis.model = "litellm/claude-opus-4-6"; metis.model = "litellm/claude-opus-4-8";
momus.model = "litellm/claude-opus-4-6"; momus.model = "litellm/claude-opus-4-8";
atlas.model = "litellm/claude-sonnet-4-6"; atlas.model = "litellm/claude-sonnet-4-8";
}; };
categories = { categories = {
visual-engineering.model = "zai-coding-plan/glm-5.1"; visual-engineering.model = "zai-coding-plan/glm-5.2";
ultrabrain.model = "litellm/claude-opus-4-6"; ultrabrain.model = "litellm/claude-opus-4-8";
deep.model = "litellm/claude-sonnet-4-6"; deep.model = "litellm/claude-sonnet-4-6";
artistry.model = "zai-coding-plan/glm-5.1"; artistry.model = "zai-coding-plan/glm-5.2";
quick.model = "litellm/claude-haiku-4-5"; quick.model = "litellm/claude-haiku-4-5";
unspecified-low.model = "litellm/claude-sonnet-4-6"; unspecified-low.model = "litellm/claude-sonnet-4-6";
unspecified-high.model = "litellm/claude-opus-4-6"; unspecified-high.model = "litellm/claude-opus-4-8";
writing.model = "zai-coding-plan/glm-5.1"; writing.model = "zai-coding-plan/glm-5.2";
}; };
}; };
}; };
@@ -227,12 +227,11 @@
output = 64000; output = 64000;
}; };
}; };
"claude-opus-4-6" = { "claude-opus-4-8" = {
name = "Claude Opus 4.6"; name = "Claude Opus 4.8";
options = { options = {
thinking = { thinking = {
type = "enabled"; type = "adaptive";
budget_tokens = 16000;
}; };
}; };
limit = { limit = {
+64 -64
View File
@@ -44,107 +44,107 @@
programs.ssh = { programs.ssh = {
enable = true; enable = true;
enableDefaultConfig = false; enableDefaultConfig = false;
matchBlocks = { settings = {
"github.com" = { "github.com" = {
hostname = "github.com"; HostName = "github.com";
user = "m3tam3re"; User = "m3tam3re";
port = 22; Port = 22;
identityFile = "~/.ssh/github"; IdentityFile = "~/.ssh/github";
}; };
"code.m3ta.dev" = { "code.m3ta.dev" = {
hostname = "code.m3ta.dev"; HostName = "code.m3ta.dev";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/gitea"; IdentityFile = "~/.ssh/gitea";
}; };
"lkk-nix-1" = { "lkk-nix-1" = {
hostname = "89.58.10.189"; HostName = "89.58.10.189";
user = "lkk-admin"; User = "lkk-admin";
identityFile = "~/.ssh/lkk-admin"; IdentityFile = "~/.ssh/lkk-admin";
}; };
"m3-r1" = { "m3-r1" = {
hostname = "202.61.226.110"; HostName = "202.61.226.110";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"m3-deck" = { "m3-deck" = {
hostname = "192.168.178.193"; HostName = "192.168.178.193";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"m3-kratos-vm" = { "m3-kratos-vm" = {
hostname = "192.168.122.43"; HostName = "192.168.122.43";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"m3-helios" = { "m3-helios" = {
hostname = "192.168.178.210"; HostName = "192.168.178.210";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"m3-ares" = { "m3-ares" = {
hostname = "192.168.1.30"; HostName = "192.168.1.30";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"m3-atlas" = { "m3-atlas" = {
hostname = "152.53.85.162"; HostName = "152.53.85.162";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"m3-hermes" = { "m3-hermes" = {
hostname = "204.168.229.93"; HostName = "204.168.229.93";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"hermes" = { "hermes" = {
hostname = "46.224.0.92"; HostName = "46.224.0.92";
user = "admin"; User = "admin";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"m3-zelda" = { "m3-zelda" = {
hostname = "95.217.189.186"; HostName = "95.217.189.186";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"m3-skynet" = { "m3-skynet" = {
hostname = "m3-skynet"; HostName = "m3-skynet";
user = "admin"; User = "admin";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"m3-prox-1" = { "m3-prox-1" = {
hostname = "192.168.1.110"; HostName = "192.168.1.110";
user = "root"; User = "root";
identityFile = "~/.ssh/m3tam3re"; IdentityFile = "~/.ssh/m3tam3re";
}; };
"shp-old" = { "shp-old" = {
hostname = "95.217.3.250"; HostName = "95.217.3.250";
port = 2222; Port = 2222;
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/self-host-playbook"; IdentityFile = "~/.ssh/self-host-playbook";
}; };
"shp-1" = { "shp-1" = {
hostname = "95.217.189.186"; HostName = "95.217.189.186";
port = 2222; Port = 2222;
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/self-host-playbook"; IdentityFile = "~/.ssh/self-host-playbook";
}; };
"AZ-CLD-1" = { "AZ-CLD-1" = {
hostname = "152.53.186.119"; HostName = "152.53.186.119";
user = "sascha.koenig"; User = "sascha.koenig";
port = 2022; Port = 2022;
identityFile = "~/.ssh/sascha.koenig"; IdentityFile = "~/.ssh/sascha.koenig";
}; };
"AZ-PRM-1" = { "AZ-PRM-1" = {
hostname = "192.168.152.76"; HostName = "192.168.152.76";
user = "sascha.koenig"; User = "sascha.koenig";
port = 2022; Port = 2022;
identityFile = "~/.ssh/sascha.koenig"; IdentityFile = "~/.ssh/sascha.koenig";
}; };
"git.az-gruppe.com" = { "git.az-gruppe.com" = {
hostname = "git.az-gruppe.com"; HostName = "git.az-gruppe.com";
port = 2022; Port = 2022;
user = "sascha.koenig"; User = "sascha.koenig";
identityFile = "~/.ssh/sascha.koenig"; IdentityFile = "~/.ssh/sascha.koenig";
}; };
}; };
}; };
+16 -16
View File
@@ -44,29 +44,29 @@
programs.ssh = { programs.ssh = {
enable = true; enable = true;
enableDefaultConfig = false; enableDefaultConfig = false;
matchBlocks = { settings = {
"AZ-CLD-1" = { "AZ-CLD-1" = {
hostname = "152.53.186.119"; HostName = "152.53.186.119";
user = "sascha.koenig"; User = "sascha.koenig";
port = 2022; Port = 2022;
identityFile = "~/.ssh/sascha.koenig"; IdentityFile = "~/.ssh/sascha.koenig";
}; };
"AZ-PRM-1" = { "AZ-PRM-1" = {
hostname = "192.168.152.76"; HostName = "192.168.152.76";
user = "sascha.koenig"; User = "sascha.koenig";
port = 2022; Port = 2022;
identityFile = "~/.ssh/sascha.koenig"; IdentityFile = "~/.ssh/sascha.koenig";
}; };
"git.az-gruppe.com" = { "git.az-gruppe.com" = {
hostname = "git.az-gruppe.com"; HostName = "git.az-gruppe.com";
port = 2022; Port = 2022;
user = "sascha.koenig"; User = "sascha.koenig";
identityFile = "~/.ssh/sascha.koenig"; IdentityFile = "~/.ssh/sascha.koenig";
}; };
"code.m3ta.dev" = { "code.m3ta.dev" = {
hostname = "code.m3ta.dev"; HostName = "code.m3ta.dev";
user = "m3tam3re"; User = "m3tam3re";
identityFile = "~/.ssh/sascha.koenig"; IdentityFile = "~/.ssh/sascha.koenig";
}; };
}; };
}; };