| name | tech-preferences |
| description | Manage technology preferences — add, update, or view personal preferences for technologies and stack combinations. Use when the user says "always use...", "prefer...", "for X projects use Y", or asks to see/edit their tech preferences. |
| user_invocable | true |
| argument | The preference to add/update (e.g., "always use TanStack libs for React") or "list" to view all preferences |
Tech Preferences Skill
You are managing the user's technology preferences stored in the learning-agent knowledge base.
Step 0 — Ensure repo exists
Check if ~/Developer/github/gordonbeeming/learning-agent/ exists. If not, clone it:
git clone git@github.com:gordonbeeming/learning-agent.git ~/Developer/github/gordonbeeming/learning-agent
Also pull latest changes:
cd ~/Developer/github/gordonbeeming/learning-agent && git pull --rebase
Step 1 — Read current preferences
Read ~/Developer/github/gordonbeeming/learning-agent/preferences/index.json to see existing preferences.
Step 2 — Determine action
If "list" or the user wants to view preferences:
- Read the index and list all preference entries with their descriptions
- If the user asks about a specific technology, read and display the relevant preference file(s)
- Done
If adding/updating a preference:
-
Identify the technologies involved in the preference statement
- "always use TanStack libs for React" → technologies: ["react"]
- "when using React with .NET, prefer minimal APIs" → technologies: ["react", "dotnet"]
- "for .NET projects, always use minimal APIs" → technologies: ["dotnet"]
-
Determine the slug for the preference file:
- Single technology: use the technology name as slug (e.g.,
react, dotnet, swift)
- Multiple technologies: join with hyphens, alphabetically (e.g.,
dotnet-react)
- Normalize: lowercase,
.NET → dotnet, C# → csharp, C++ → cpp
-
Check if a preference file already exists for this slug in the index
-
If the file exists: Read it, add/update the relevant preference, write it back
- Organize preferences under logical headings (## Libraries, ## Patterns, ## Configuration, etc.)
- Use bullet points for individual preferences
- If the new preference contradicts an existing one, replace the old one
-
If the file doesn't exist: Create a new preference file with a heading and the preference
- Create
preferences/<slug>.md
- Add an entry to
preferences/index.json
Step 3 — Git commit and push
cd ~/Developer/github/gordonbeeming/learning-agent
git add preferences/
git commit -m "preferences: update <slug>"
git push
Step 4 — Confirm
Tell the user what preference was saved and where.
Preference file format
# <Technology> Preferences
## Libraries
- Always use X for Y
- Prefer A over B for Z
## Patterns
- Use functional components exclusively
- Prefer server components where possible
## Configuration
- Always enable strict mode
- Use ESLint with recommended config
Keep preferences concise and actionable. Each bullet should be a clear, unambiguous instruction.