From ad376e310828b1a42b5e39ff1b2698517135b030 Mon Sep 17 00:00:00 2001 From: Amolith Date: Sat, 27 Dec 2025 22:50:07 -0700 Subject: [PATCH] feat(agents): move lots into skills https://git.secluded.site/agent-skills --- dot_config/AGENTS.md | 72 ++------------------------------------------ 1 file changed, 2 insertions(+), 70 deletions(-) diff --git a/dot_config/AGENTS.md b/dot_config/AGENTS.md index e62b2049350da1c5968319d7a5427c8ecc69305c..da9038fbf91b55f1c52b3998f78e34ab7666f296 100644 --- a/dot_config/AGENTS.md +++ b/dot_config/AGENTS.md @@ -24,84 +24,16 @@ When I provide the URL to or number of a ticket, todo, or issue, use the appropr - todo.sr.ht, "todo", or "ticket: `hut todo ticket show -t '~USER/TRACKER' XXX` where XXX is the ticket number. I'll refer to these as todos or tickets. USER and TRACKER are required, so if you can't determine this from branch/remotes, ask me _before_ running the `hut` command. - Run `git remote -v` and notice whether any of the remotes include 'soprani.ca', 'sopranica', 'singpolyma', variations of 'cheogram', or 'sgx-XXX' where XXX is an arbitrary string (for example, sgx-jmp, sgx-bwmsgsv2, sgx-endstream, etc.). If any of those keywords are found, the relevant tracker is `~singpolyma/soprani.ca`. -## Committing - -During the course of our conversation, we may implement not only the thing we set out to implement, we might also introduce some bugs and fix them before making the commit. When creating commits, only reference bugs/issues/tickets/problems that have existed since the last commit; don't mention issues introduced _and_ fixed during this session, just the pre-existing one(s). - -Strictly follow Conventional Commits. For AUR packages, the prefix will usually be `chore:` with no scope. For most source code repositories, we'll usually require both an appropriate prefix _and_ scope. Necessity of scope increases with repository size; the smaller the repo, the less necessary the scope. - -Valid trailers for ticket tracking integration depend on the platform we're currently using: - -- GitHub - - Closes: - - Fixes: (preferred if applicable) - - Resolves: - - References: -- SourceHut - - Closes: - - Fixes: (preferred if applicable) - - Implements: - - References: - ## Planning before acting IMPORTANT: When I ask you to plan first, I want you to first slow down and make sure you're taking your time and deliberating prior to jumping in and fulfilling my request. You'll need to look around at any mentioned files, or explore them to identify which are relevant, prior to deciding on a course of action. Only once you've broken the request down and have a solid idea what changes are necessary should you fill out your task list. Once you've made the plan, stop and ask me to review it. Once I explicitly confirm, you may get started. -## Tooling - -I like various systems you may not be completely familiar with, so here are some descriptions and instructions. - -### formatted-commit - -Create/amend commits exclusively using `formatted-commit`. It has no sub-commands and the following options: - --t --type Commit type (required) --s --scope Commit scope (optional) --B --breaking Mark as breaking change (optional) --m --message Commit message (required) --b --body Commit body (optional) --T --trailer Trailer in 'Sentence-case-key: value' format (optional, repeatable) --a --add Stage all modified files before committing (optional) ---amend Amend the previous commit (optional) --h --help - - -formatted-commit -t feat -s "web/git-bug" -m "do a fancy new thing" -T "Assisted-by: GLM 4.6 via Crush" -b "$(cat <<'EOF' -Multi-line - -- Body -- Here - -EOF -)" - - -### Lunatask - -I use Lunatask, an ADHD-friendly E2EE productivity app, for keeping up with tasks, notes, habits, relationships, etc. All sensitive fields (names, titles, bodies, contents) are write-only due to encryption. We can retrieve and manipulate metadata, but only overwrite those sensitive fields. - -Resources accept UUIDs or `lunatask://` deeplinks as IDs, config keys for areas/goals/habits/notebooks, `-` for stdin, natural language for dates, and Markdown for content. Task notes are useful for storing context/prompts for future agent sessions. If I specify an area but not a goal, list the goals to see which might be relevant. When I refer to `something/else`, I mean `area/goal`. For example, `projects/lunatask` would be `projects` area and `lunatask` goal. - -#### task formatting +## Lunatask Use `[title](lunatask://...)` syntax when including deep links. Titles must be useful, concise, conversational _and_ mention the project name. For example, "Implement FunctionSignature(Args) in go-lunatask". Bodies should be clear and actionable. Start your note by addressing me directly in a block quote. I should smile when I come across your note later :) After your quoted note to me, write a horizontal rule. Everything after that is a thorough, friendly message from to you to future Veldt to follow our slow and methodical planning approach, then going and implementing something. Be sure to give yourself a friendly greeting too o/ In the message to yourself, initially use `\n\nID: PLACEHOLDER_ID` at the very end, then update the note to swap the placeholder with the real ID. It'll be printed after initial task creation. Also include instructions to update the task to `in_progress` once started, then `complete` once finished. New tasks get status `later`. You may _only_ append to a task's note unless I explicitly ask you to _overwrite_ it. Lunatask only supports overwriting, so that means you need to reproduce your original note verbatim, plus your appended content. When appending, start with a horizontal rule to separate the previous content from the new. Make sure to write well-formed markdown with proper whitespace and formatting. Note all the newlines between headings and paragraphs in this file. -#### How to defer work +## How to defer work Your suggestions are valuable and our findings while working are important. When we identify an issue, or you suggest improvements, fixes, etc., but I say we'll tackle them later, suggest creating a task in Lunatask so we don't lose that information. If I directly reference something to begin our work, make sure to append a `References: {ref}` trailer for each of them so I can find them again. Try to turn the refs into web links, but project-name/commit/{hash} or project-name/pr/{number} or project-name/todo/{number} are fine to fall back on. - -### Use `fish -c 'doc-agent'` for supported doc sets - -`fish -c 'doc-agent'` spawns focused agents to trawl through the docs of specific languages/tools. These agents have restricted tool access and are optimized for looking up specific sets of documentation. List the available doc sets and see its usage with `fish -c 'doc-agent -h'`. Use it for API docs, checking function usage patterns, describing more than one symbol, etc. If you can obtain the docs in one call yourself, do so. Use `fish -c 'doc-agent'` when the query likely requires checking multiple sections of docs, like "Check path.to/module for how to use module.Type in module.method". - -### Ad-hoc custom sub-agents - -When I ask you to use subagents to do something, invoke them with `opx synu claude --flags -p "prompt"`. Use a precise and thorough prompt. Aggressively restrict which tools it can interact with; if it doesn't need Edit, don't give it Edit. If it needs to read files, Glob, Grep, and Read are probably sufficient. Task can be helpful. Notebook, Slash, Write, Web, Edit, etc. should almost never be necessary. - -When I ask you to use them, run them in the foreground. They'll move to the background if they take too long. You make invoke multiple when appropriate and in parallel if helpful. - -``` -fish -c "opx synu claude --disallowed-tools 'Bash(*) Explore Edit Read WebFetch WebSearch Glob Grep NotebookEdit NotebookRead SlashCommand Write' --allowed-tools 'Bash(git log:*) Bash(git show:*)' -p 'Using only `git log` and `git show`, summarise the major user-facing changes in HASH..HASH. Do not provide code snippets or technical details. Consider user-facing changes, like being able to set a port-out PIN or adding a new button or changing font sizes.'" -```