magnusrodseth
User⚙️ There are many like them, but these dotfiles are mine. A stow-managed macOS setup: Zsh, Neovim, tmux, Ghostty, and a pile of Claude Code tooling.
Categories
Indexed Skills (53)
gh-image
Upload local images to GitHub and get back ready-to-paste markdown (user-attachments URLs) for embedding in issues, PRs, comments, READMEs, gists, or Discussions, via the gh image CLI extension (drogers0/gh-image). Use when the user wants to attach/embed/upload an image or screenshot into a GitHub issue/PR/comment, mentions "gh image", "user-attachments URL", "include the screenshots in the issue", or asks to file an issue/PR with an image. For locating macOS screenshots first, see the screenshots skill.
github-cli
GitHub CLI workflows for issues, labels, and PRs with proper linking, base branch handling, and structured descriptions
screenshots
Locate macOS screenshots saved to ~/screenshots/ and route them into downstream workflows — most commonly attaching to GitHub PR/issue/comment bodies via the gh image extension, but also useful for previewing, organizing, copying to clipboard, or feeding into other tools. Use when the user mentions "screenshots", "today's screenshots", "find a screenshot", "attach screenshots", "upload screenshot", "images on machine", or wants to locate, preview, or share a local screenshot.
impeccable
Design, critique, polish or overhaul frontend UI: sites, landing pages, dashboards, components, forms, onboarding, empty states. Covers UX review, hierarchy, accessibility, typography, color, motion, design systems. Not backend.
share-skill
Package an installed Claude Code skill into a shareable zip in a fresh temp folder, then open that folder in Finder. Use when the user says "/share-skill <name>", "share the X skill", "bundle/export/package a skill to send someone", or wants a skill zipped up to hand off.
address-review
Take a GitHub PR's review feedback end to end: fetch unresolved threads from bots and humans, judge each, apply fixes, push, then reply and resolve. Use for "address the review" or "go through the PR feedback".
agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.
autoresearch
Autonomous hill-climbing on any measurable problem: qualify the four legs, freeze an eval referee, then loop mutate-evaluate-keep/revert until the stopping condition fires. Works on tests, latency, bundle size, cost.
building-native-ui
Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.
manage-dotfiles-config
Safely edit tool config files in this dotfiles repo (Zed, Neovim, Ghostty, Yazi, tmux, lazygit, etc.) by looking up real current docs for exact option/keybind/action names instead of guessing, then validating per file format. Use when changing editor or terminal settings or keybindings, adding/remapping a shortcut, toggling a panel/dock, or whenever the user references a config file like keymap.json, settings.json, init.lua, config.toml, or asks "what's the action/option for X in <tool>".
onepassword-cli
Use the 1Password CLI (`op`) to read secrets, list and inspect vaults/items, inject secrets into env files and commands, and create/edit items on Magnus's accounts (personal `my.1password.eu`, work `capragroup.1password.eu`). Use when the user mentions 1Password, the `op` command, secret references (`op://...`), needs an API key/token/credential pulled from a vault, wants to feed secrets into `.env` files or commands via `op run`/`op inject`, or asks to find, read, create, or edit a vault item.
playwright-cli
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
product-marketing-context
When the user wants to create or update their product marketing context document. Also use when the user mentions 'product context,' 'marketing context,' 'set up context,' 'positioning,' or wants to avoid repeating foundational information across marketing tasks. Creates `.claude/product-marketing-context.md` that other marketing skills reference.
use-spark
Use the spark CLI to access the user's Spark email data - list emails, search by topic, read threads, check calendar events, find availability, look up contacts, and view team info. Use when the user asks about their emails, calendar, contacts, meetings, or scheduling.
web-design-guidelines
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
aso-keyword-research
App Store Optimization keyword research using the public iTunes Search API. Computes keyword popularity (5-100) and difficulty (1-100) scores based on RespectASO algorithms. Use when the user asks to research ASO keywords, find keyword opportunities, check keyword difficulty, analyze App Store competition, optimize App Store keywords, or find sweet spot keywords. Triggers on "ASO", "keyword research", "keyword difficulty", "keyword popularity", "App Store keywords", "App Store optimization keywords".
capture-inspo
Capture full-page screenshots of real sites by aesthetic or vibe as design inspiration, driving your own Chrome via playwriter over Land-book, Lapa Ninja, Awwwards and Mobbin. Use for "capture inspo".
conductor-setup
Set up Conductor (conductor.build) for a repository. Creates conductor.json, setup scripts for .env symlinking, and configures dev server run commands. Use when the user asks to "set up Conductor", "configure Conductor", "add conductor.json", "create conductor config", or mentions Conductor workspaces for a new or existing repo.
create-cli
Design and build command-line tools, both the interface spec (args, flags, subcommands, help, output modes, errors, exit codes, config) per clig.dev and the implementation using Magnus's agent-ready Rust house style (clap derive, global --json, keychain/op/file secret backends, in-repo agent skills, AGENTS.md) modeled on sparebank1-cli and skatteetaten-cli. Use when the user wants to create a new CLI, design a CLI interface, scaffold a command-line tool, or make an existing CLI agent-friendly.
domain-availability
Check whether domain names are available to register across many TLDs, using DNS delegation + RDAP (whois's replacement) with a system-whois fallback — no MCP, no dependencies. Use when the user asks if a domain is available, wants to check a domain name, brainstorm or find available domains, or check a name across TLDs (e.g. "is acme.com free?", "find me a domain for X", "check acme across TLDs").
entur
Look up public transit travel times and routes in Norway using the Entur APIs. Use when the user asks about travel time, transit routes, how to get somewhere, or distance between locations in Norway. Triggers on "travel time from X to Y", "how long from X to Y", "reisetid fra X til Y", "transit from X to Y", "kollektivt fra X til Y", /entur, or any question about getting between two places via public transport in Norway.
few-shot-examples
Best practices for designing few-shot (input→output) examples in prompts for AI and agentic applications. Use when writing or reviewing prompts that need consistent formatting, structured/JSON output, classification, extraction, edge-case handling, or hallucination reduction; or when the user mentions few-shot, multishot, in-context examples, or "show the model an example".
find-skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
format-slack-message
Format a message for Slack and copy it to the clipboard as HTML so Slack's composer renders rich text (bold, italic, code, lists, links, blockquotes) on paste. Use when the user wants to paste a formatted message into Slack. Triggers on "copy to slack", "format for slack", "slack message", "paste to slack", or any request to prepare a rich-formatted message for Slack.
format-teams-message
Format a message for Microsoft Teams and copy it to the clipboard as HTML so Teams renders formatting (bold, headings, code blocks, lists, links, blockquotes) on paste. Use when the user wants to paste a formatted message into Teams. Triggers on "copy to teams", "format for teams", "teams message", "paste to teams", or any request to prepare a rich-formatted message for Microsoft Teams.
git-branch-cleanup
Safely delete local git branches that are already merged, squash/rebase-merged, or whose remote was deleted, while protecting the current branch, the default branch, and any worktree-checked-out branch. Use when the user wants to clean up, prune, tidy, or delete "done"/merged/stale local branches, shrink a long `git branch` list, or remove branches after merging a PR.
humanize
Detect and rewrite prose that reads as AI-generated: em dashes, AI vocabulary, negative parallelisms, rule-of-three filler, puffery, tone tells. Use for "humanize this", "de-slop", "sounds like ChatGPT", "make this less AI".
image-generation
Generate and edit images via OpenAI's gpt-image-2 (ChatGPT Images 2.0) API. Use when the user asks to "generate an image", "create an image", "make a picture of X", "draw X", "edit this image", "remove the background from this image", "extend this image", "regenerate this image with Y", or invokes /image-generation. Outputs PNG/JPEG/WebP files to disk. Requires OPENAI_API_KEY in the environment.
image-processing
Process images in TS/JS with Bun's Bun.Image API: resize, crop, rotate, compress, convert (JPEG/PNG/WebP/HEIC/AVIF), thumbnails, LQIP/ThumbHash placeholders, EXIF. Replaces sharp on Bun.
learn-codebase
Understand a codebase by reading its actual source, on GitHub or on disk: how a pattern is really implemented, an org's conventions, how two things are wired. Use for "how does <repo> do X". For published API docs prefer find-docs.
linkedin-mcp
Read LinkedIn DMs/threads, look up people and company profiles, search and inspect job postings, and send messages or connection requests via the linkedin MCP server. Use when the user asks to check LinkedIn messages/inbox, read a conversation, search messages, look up a profile or company, search jobs, send a LinkedIn DM, or send/accept a connection request.
merge-resolver
Git expert that analyzes merge conflicts by examining branches, commits, and diffs to provide resolution recommendations. Use when there are merge conflicts to resolve. Triggers on "merge conflict", "resolve conflict", "git conflict", "CONFLICT in", or when git status shows unmerged paths.
notion-cli
Interact with Notion via the `ntn` CLI — create, read, update, and trash pages; upload files; manage blocks via the public API. Use when the user wants to publish content to Notion, post a blog post or document to a Notion database, upload images to Notion, manage Notion pages from the command line, or asks about ntn / Notion CLI / NOTION_API_TOKEN / Notion integrations.
Export markdown as professional PDF using pandoc + typst (no LaTeX needed). Use when the user asks to: create a PDF, export markdown to PDF, generate a report/handout/document as PDF, or when they mention PDF, pandoc, print-ready, or document export.
read-up-on
Jog the agent's memory on a topic, person, or project that lives somewhere in the user's Obsidian vault (second brain). Works from any directory on the machine. Use when the user says "read up on X", "catch me up on X", "what do I know about X", "remind yourself about X", or otherwise asks for a briefing on a subject they expect to be in their vault but won't say where.
review-axes
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".
scaffold-presentation
Scaffold a new slide deck in the user's central presentations repo (~/dev/personal/presentations), sourcing content from the current code repo, the current conversation, or material in the Obsidian vault, and matching or creating a brand theme. Works from any directory. Use when the user says "make a presentation about X", "scaffold a deck", "turn this into slides", "lag en presentasjon om X", "create a talk from this repo/conversation", or wants to present something they have been working on.
skill-audit
Audit installed Claude Code skills for context-budget cost and real usage. Inventories ~/.claude/skills, estimates the always-loaded token cost of each description, and mines ~/.claude/projects transcripts for actual invocations to find unused skills. Use when the user asks to "audit skills", "clean up skills", "find unused skills", "skill budget", "too many skills", or wonders what their skills cost in context.
sparring-partner
Intellectual sparring partner for refining ideas, strategies, and decisions. Use when you need someone to challenge your thinking, poke holes in plans, or explore alternatives. Triggers on "challenge this", "poke holes", "devil's advocate", "stress test this idea", "what am I missing", or any request for constructive critical feedback on ideas or plans.
stacked-prs
Manage a stack of dependent pull requests (a chain where each PR's base is the branch below it, up to main) using git + gh. Use when working with stacked or dependent PRs, merging the bottom of a stack, retargeting a PR's base to main, propagating main or a review fix up a chain of branches, resolving conflicts across a PR stack, or recovering a stacked PR that was auto-closed when its base branch was deleted.
tanstack-seo
Complete SEO setup for TanStack Router/Start: OG image generation (Satori + Resvg), meta helpers, JSON-LD structured data, sitemap, robots.txt, llms.txt, canonical URLs, Twitter Cards, web manifest.
update-skill
Maintain an existing skill by batching real usage feedback, reflecting on the patterns, and landing one focused edit instead of reactive monkey-patches. Use when the user wants to improve, tune, fix, or update a skill they already wrote, points at feedback for a skill (a notepad, GitHub comments, Slack threads), says a skill is drifting or misbehaving, or wants to set up a weekly self-improvement loop for their skills.
vault
Extract insights from conversations and store them in your Obsidian vault. Use when you want to capture learnings, how-to guides, brags, decisions, or any knowledge from the current chat into your second brain. Triggers on "save to vault", "store this in obsidian", "capture this learning", "add to vault", "remember this in obsidian", or any request to persist knowledge to the Obsidian vault.
write-a-skill
Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.
write-in-my-voice
Draft or rewrite text in Magnus Rødseth's own voice, in Norwegian or English. Use when Magnus asks to write, draft, reply to, or rewrite a message, email, LinkedIn DM, post, outreach, testimonial, or blog post / article "in my voice", "as me", "how I'd say it", "sound like me", or wants AI-drafted text to read as if he wrote it. Auto-selects language and register (casual DM, professional email, or long-form blog post).
opencode-docs
OpenCode + OhMyOpenCode configuration reference - agents, tools, MCP, skills, commands, hooks, permissions, providers, and Sisyphus orchestration patterns
vercel-react-best-practices
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
resume-from-context
Create a polished, debranded personal resume/CV as a PDF from existing context (an employer-branded CV, vault notes, a LinkedIn profile, or the conversation) using typst. Use when the user asks to build/make a resume or CV, turn an existing or consultancy-branded (e.g. Capgemini) CV into a personal one, create a beautiful shareable CV PDF with a photo, or 'lag en CV'.
empirical-research
Appraise whether an empirical claim actually holds, against primary sources, with a mandatory refutation pass and tiered sources. Use for "does X actually work", benchmark and vendor claims. Not for API docs (find-docs).
devto
Publish and manage articles on Dev.to (Forem API) from local markdown, using the API key stored in 1Password. Use when the user wants to post, draft, update, publish, unpublish, or list their Dev.to articles, cross-post a blog post or vault note to Dev.to, or mentions dev.to, DEV Community, or the Forem API.
spark-link
Resolve a Spark email deep link (readdle-spark://) into the underlying Gmail message so it can be read, replied to, drafted from, or acted on with the gws CLI. Use whenever the user pastes a readdle-spark:// link, or refers to "the email I just copied from Spark", "this email" right after copying one, or asks to continue working in gws on something they are looking at in Spark.
copy-to-clipboard
Format text/messages nicely based on context and copy to clipboard using pbcopy. Use when the user wants to draft and copy a message, email, post, or any text to their clipboard. Triggers on "copy to clipboard", "draft a message", "write an email and copy it", "copy this", or any request to prepare and copy text for pasting elsewhere.
youtube-transcribe
Transcribe YouTube videos and extract key information using yt-dlp. Use when the user shares a YouTube URL and wants to transcribe it, summarize it, extract key points, or dump learnings from a video. Triggers on YouTube links (youtube.com/watch, youtu.be) combined with requests to "transcribe", "summarize", "watch", "extract", "key points", "notes from this video", or "what does this video say".
Bio shown is the top-scored skill's repo description as a fallback — real GitHub bios land in a future update.