[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BSSANCW3MDCFB3QV9DMQDM":3,"skill-same:01M6BSSANCW3MDCFB3QV9DMQDM":56},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":22,"linkOnly":23,"markdownContent":24,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":6,"ownerHtmlUrl":32,"ownerBlogUrl":33,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M6BSSANCW3MDCFB3QV9DMQDM","fut",null,"Control Fut, a project-oriented terminal multiplexer. Use when the user explicitly mentions Fut or asks to inspect or manage Fut resources, create background terminals, send or collect terminal I\u002FO, or coordinate reported coding-agent activity.","mikker\u002Fdotfiles","mikker","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2819?v=4","01M6BSPF9WRVEQ89CW9NNJ7JK4","Mikkel Malmberg","01M6BSPFEEZKZSB4B603CZGV9W",116,"MIT","https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fagents.symlink\u002Fskills\u002Ffut\u002FSKILL.md",[],[5,19,20,21],"terminal","create","collect","2026-11-10 10:12:30",false,"---\nname: fut\ndescription: Control Fut, a project-oriented terminal multiplexer. Use when the user explicitly mentions Fut or asks to inspect or manage Fut resources, create background terminals, send or collect terminal I\u002FO, or coordinate reported coding-agent activity.\n---\n\n# Fut\n\nUse Fut's noun-first CLI to inspect and control sessions, workspaces, tabs,\npanes, terminals, and integrated coding agents without changing visual focus.\n\n## Discover the installed CLI\n\nTreat the installed binary as authoritative. Inspect the relevant command before\nusing it:\n\n```sh\nfut --help\nfut pane --help\nfut pane split --help\nfut terminal --help\nfut agent --help\nfut agent prompt --help\nfut agent skill\n```\n\nDo not run bare `fut` for discovery; it opens the current directory and attaches\ninteractively. Do not assume commands from tmux, Herdr, or another Fut release\nexist.\n\n## Resolve explicit targets\n\nProcesses inside Fut inherit a complete resource chain:\n\n```sh\nprintf '%s\\n' \\\n  \"$FUT_SESSION_ID\" \\\n  \"$FUT_WORKSPACE_ID\" \\\n  \"$FUT_TAB_ID\" \\\n  \"$FUT_PANE_ID\" \\\n  \"$FUT_TERMINAL_ID\"\nfut --json context\n```\n\n`context` treats `FUT_TERMINAL_ID` as the stable identity and resolves its\ncurrent live ancestry from the daemon. Ancestor variables describe the spawn\nlocation and may be stale after a pane move. Treat `missing_context`,\n`invalid_context`, `stale_context`, and `closing_context` as typed failures;\ndo not fill gaps from another client's focus.\n\nLook up any known resource UUID explicitly, including from outside Fut:\n\n```sh\nfut --json get \"$resource_id\"\nfut --json list\nfut --json agent list\n```\n\nIf a client reports that its protocol does not match the running daemon, do not\ngive up on read-only inspection. Find the daemon process which owns\n`FUT_SOCKET`, resolve that process's executable, and use that exact binary with\n`--socket \"$FUT_SOCKET\"` for `get`, `list`, `agent get`, `agent read`, and\n`terminal read`. On macOS, `lsof -p DAEMON_PID` shows the executable as its\n`txt` entry. Never use this fallback for mutations or lifecycle reports;\nrestart Fut so the normal `fut` on `PATH` matches the daemon first.\n\nRead IDs from JSON responses. Creation commands put the new resource IDs under\n`.result.selected`; agent commands use `.result.agent` or `.result.agents`.\nPass those IDs explicitly to every later command. Check the exit status, parse\nsuccessful JSON from stdout, and parse a structured JSON error from stderr on\nfailure.\n\nFor direct human use inside Fut, layout commands may omit the applicable\ncurrent ID (`tab new`, `tab rename NAME`, `pane split right`, `pane close`, and\nsimilar forms). Automation should retain returned explicit IDs whenever it\nowns a particular resource; omitted-ID mutations are guarded against ancestry\nchanges by the daemon.\n\n## Create a background terminal\n\nSplit beside an existing pane to stay in the same tab. Omit `--cwd` to inherit\nthe anchor pane's current directory. The command creates the pane in the\nbackground and never selects it in a client:\n\n```sh\nfut --json pane split \"$FUT_PANE_ID\" right -- codex\nfut --json pane split \"$FUT_PANE_ID\" down --cwd \u002Fpath\u002Fto\u002Fproject -- zsh\n```\n\nRecord `.result.selected.pane_id` and `.result.selected.terminal_id` immediately.\nUse `pane new` when a tab ID, rather than an anchor pane, is the intended scope:\n\n```sh\nfut --json pane new \"$FUT_TAB_ID\" --cwd \"$PWD\" -- codex\n```\n\nArguments after `--` are a child argument vector. Wait for a launched agent's\nintegration report before expecting it in `agent list`; inspect its explicit\nterminal ID with `agent get`.\n\n## Control an ordinary terminal\n\nSubmit one literal shell command plus Enter atomically:\n\n```sh\nfut --json terminal run \"$terminal_id\" 'mise run test'\n```\n\nUse lower-level input only when atomic command submission is not appropriate:\n\n```sh\nfut --json terminal send-text \"$terminal_id\" 'draft text'\nfut --json terminal send-keys \"$terminal_id\" ctrl+c\n```\n\n`send-text` does not press Enter. `send-keys` accepts named keys, characters,\nand chords exposed by installed help.\n\nCollect bounded output without attaching:\n\n```sh\nfut --json terminal read \"$terminal_id\"\nfut --json terminal read \"$terminal_id\" --source recent-unwrapped --lines 200\nfut --json terminal wait-output \"$terminal_id\" --literal 'READY' --timeout 30s\nfut --json terminal wait-output \"$terminal_id\" --regex 'done [0-9]+' --timeout 2m\n```\n\nPrefer one daemon-side `wait-output` deadline to polling. Treat `output_timeout`,\n`terminal_exited`, invalid regexes, and output limits as typed outcomes.\n\n## Retire a disposable workspace\n\nAfter an external tool has permanently removed the current workspace's backing\ndirectory, request asynchronous retirement instead of leaving the terminal in a\ndeleted working directory:\n\n```sh\nfut --json workspace retire\nfut --json workspace retire \"$workspace_id\"\n```\n\nRetirement is acknowledged before Fut terminates the workspace's terminals.\nThe inferred form validates the caller's live terminal context. Use ordinary\n`workspace close` when the caller must wait for confirmed process termination;\nuse retirement when the caller is itself inside the target being closed.\n\n## Coordinate an integrated agent\n\nAn integrated agent is a terminal that has reported semantic lifecycle state.\nDiscover and inspect it without focus changes:\n\n```sh\nfut --json agent list\nfut --json agent get \"$terminal_id\"\nfut --json agent read \"$terminal_id\" --source recent-unwrapped --lines 200\n```\n\nSubmit a prompt atomically. Add `--wait` and `--timeout` when the result is needed:\n\n```sh\nfut --json agent prompt \"$terminal_id\" 'Review the failing test.'\nfut --json agent prompt \"$terminal_id\" 'Review it, fix it, and report tests.' --wait --timeout 2m\nfut --json agent prompt \"$terminal_id\" --stdin \u003C detailed-prompt.md\n```\n\nPrefer `--stdin` for multiline or generated prompts so their contents never\nneed to be interpolated into a shell argument.\n\n`prompt --wait` is the fresh-prompt barrier: it requires a new `working` report\nafter submission before accepting a later `completed`, `blocked`, or `idle`\nstate. Inspect `.result.activity.state`; `blocked` is a successful structured\noutcome, so surface its output or blocker instead of treating exit status zero\nas completion or blindly retrying.\n\nWait for work already in progress separately:\n\n```sh\nfut --json agent wait \"$terminal_id\" --timeout 2m\n```\n\nStandalone `agent wait` may return an already settled state immediately. It does\nnot establish a fresh prompt barrier. Treat `not_an_agent`, `agent_busy`,\n`agent_timeout`, `agent_events_lagged`, and `terminal_exited` as typed failures.\n\n## Report lifecycle from an integration\n\nOnly an integration for the process in that terminal should report lifecycle:\n\n```sh\nfut --json agent report idle --terminal-id \"$FUT_TERMINAL_ID\" --source codex\nfut --json agent report working --terminal-id \"$FUT_TERMINAL_ID\" --source codex --agent-session-id \"$agent_session_id\" --turn-id \"$turn_id\"\nfut --json agent report blocked --terminal-id \"$FUT_TERMINAL_ID\" --source codex --agent-session-id \"$agent_session_id\" --turn-id \"$turn_id\"\nfut --json agent report completed --terminal-id \"$FUT_TERMINAL_ID\" --source codex --agent-session-id \"$agent_session_id\" --turn-id \"$turn_id\"\n```\n\nInside Fut, `--terminal-id` may be omitted because `FUT_TERMINAL_ID` is used.\nDo not manufacture reports on behalf of another agent or infer semantic state\nfrom its screen.\n\n## Handle alternate-screen programs\n\nRecent history is unavailable while a full-screen program uses the alternate\nscreen. Fall back to its visible viewport:\n\n```sh\nfut --json agent read \"$terminal_id\" --source visible\nfut --json terminal read \"$terminal_id\" --source visible\n```\n\nPrefer `agent read` for integrated agents because it includes lifecycle and\navailability. Use raw `terminal read`, `send-text`, and `send-keys` for an\nunintegrated interactive program. Never screen-scrape a completion state when\nlifecycle reports are available.\n\n## Clean up only owned resources\n\nKeep the pane and terminal IDs returned by creation. Collect final output and\nstate before closing the pane:\n\n```sh\nfut --json agent get \"$created_terminal_id\"\nfut --json agent read \"$created_terminal_id\" --source recent-unwrapped --lines 200\nfut --json pane close \"$created_pane_id\"\n```\n\nIf the process is not an integrated agent, use `terminal read` before closing.\nClose only resources created for the current task unless the user explicitly\nrequests broader cleanup. Never select, attach to, or visually focus a resource\nmerely to inspect, control, wait for, or close it.\n","# Fut\n\nUse Fut's noun-first CLI to inspect and control sessions, workspaces, tabs,\npanes, terminals, and integrated coding agents without changing visual focus.\n\n## Discover the installed CLI\n\nTreat the installed binary as authoritative. Inspect the relevant command before\nusing it:\n\n```sh\nfut --help\nfut pane --help\nfut pane split --help\nfut terminal --help\nfut agent --help\nfut agent prompt --help\nfut agent skill\n```\n\nDo not run bare `fut` for discovery; it opens the current directory and attaches\ninteractively. Do not assume commands from tmux, Herdr, or another Fut release\nexist.\n\n## Resolve explicit targets\n\nProcesses inside Fut inherit a complete resource chain:\n\n```sh\nprintf '%s\\n' \\\n  \"$FUT_SESSION_ID\" \\\n  \"$FUT_WORKSPACE_ID\" \\\n  \"$FUT_TAB_ID\" \\\n  \"$FUT_PANE_ID\" \\\n  \"$FUT_TERMINAL_ID\"\nfut --json context\n```\n\n`context` treats `FUT_TERMINAL_ID` as the stable identity and resolves its\ncurrent live ancestry from the daemon. Ancestor variables describe the spawn\nlocation and may be stale after a pane move. Treat `missing_context`,\n`invalid_context`, `stale_context`, and `closing_context` as typed failures;\ndo not fill gaps from another client's focus.\n\nLook up any known resource UUID explicitly, including from outside Fut:\n\n```sh\nfut --json get \"$resource_id\"\nfut --json list\nfut --json agent list\n```\n\nIf a client reports that its protocol does not match the running daemon, do not\ngive up on read-only inspection. Find the daemon process which owns\n`FUT_SOCKET`, resolve that process's executable, and use that exact binary with\n`--socket \"$FUT_SOCKET\"` for `get`, `list`, `agent get`, `agent read`, and\n`terminal read`. On macOS, `lsof -p DAEMON_PID` shows the executable as its\n`txt` entry. Never use this fallback for mutations or lifecycle reports;\nrestart Fut so the normal `fut` on `PATH` matches the daemon first.\n\nRead IDs from JSON responses. Creation commands put the new resource IDs under\n`.result.selected`; agent commands use `.result.agent` or `.result.agents`.\nPass those IDs explicitly to every later command. Check the exit status, parse\nsuccessful JSON from stdout, and parse a structured JSON error from stderr on\nfailure.\n\nFor direct human use inside Fut, layout commands may omit the applicable\ncurrent ID (`tab new`, `tab rename NAME`, `pane split right`, `pane close`, and\nsimilar forms). Automation should retain returned explicit IDs whenever it\nowns a particular resource; omitted-ID mutations are guarded against ancestry\nchanges by the daemon.\n\n## Create a background terminal\n\nSplit beside an existing pane to stay in the same tab. Omit `--cwd` to inherit\nthe anchor pane's current directory. The command creates the pane in the\nbackground and never selects it in a client:\n\n```sh\nfut --json pane split \"$FUT_PANE_ID\" right -- codex\nfut --json pane split \"$FUT_PANE_ID\" down --cwd \u002Fpath\u002Fto\u002Fproject -- zsh\n```\n\nRecord `.result.selected.pane_id` and `.result.selected.terminal_id` immediately.\nUse `pane new` when a tab ID, rather than an anchor pane, is the intended scope:\n\n```sh\nfut --json pane new \"$FUT_TAB_ID\" --cwd \"$PWD\" -- codex\n```\n\nArguments after `--` are a child argument vector. Wait for a launched agent's\nintegration report before expecting it in `agent list`; inspect its explicit\nterminal ID with `agent get`.\n\n## Control an ordinary terminal\n\nSubmit one literal shell command plus Enter atomically:\n\n```sh\nfut --json terminal run \"$terminal_id\" 'mise run test'\n```\n\nUse lower-level input only when atomic command submission is not appropriate:\n\n```sh\nfut --json terminal send-text \"$terminal_id\" 'draft text'\nfut --json terminal send-keys \"$terminal_id\" ctrl+c\n```\n\n`send-text` does not press Enter. `send-keys` accepts named keys, characters,\nand chords exposed by installed help.\n\nCollect bounded output without attaching:\n\n```sh\nfut --json terminal read \"$terminal_id\"\nfut --json terminal read \"$terminal_id\" --source recent-unwrapped --lines 200\nfut --json terminal wait-output \"$terminal_id\" --literal 'READY' --timeout 30s\nfut --json terminal wait-output \"$terminal_id\" --regex 'done [0-9]+' --timeout 2m\n```\n\nPrefer one daemon-side `wait-output` deadline to polling. Treat `output_timeout`,\n`terminal_exited`, invalid regexes, and output limits as typed outcomes.\n\n## Retire a disposable workspace\n\nAfter an external tool has permanently removed the current workspace's backing\ndirectory, request asynchronous retirement instead of leaving the terminal in a\ndeleted working directory:\n\n```sh\nfut --json workspace retire\nfut --json workspace retire \"$workspace_id\"\n```\n\nRetirement is acknowledged before Fut terminates the workspace's terminals.\nThe inferred form validates the caller's live terminal context. Use ordinary\n`workspace close` when the caller must wait for confirmed process termination;\nuse retirement when the caller is itself inside the target being closed.\n\n## Coordinate an integrated agent\n\nAn integrated agent is a terminal that has reported semantic lifecycle state.\nDiscover and inspect it without focus changes:\n\n```sh\nfut --json agent list\nfut --json agent get \"$terminal_id\"\nfut --json agent read \"$terminal_id\" --source recent-unwrapped --lines 200\n```\n\nSubmit a prompt atomically. Add `--wait` and `--timeout` when the result is needed:\n\n```sh\nfut --json agent prompt \"$terminal_id\" 'Review the failing test.'\nfut --json agent prompt \"$terminal_id\" 'Review it, fix it, and report tests.' --wait --timeout 2m\nfut --json agent prompt \"$terminal_id\" --stdin \u003C detailed-prompt.md\n```\n\nPrefer `--stdin` for multiline or generated prompts so their contents never\nneed to be interpolated into a shell argument.\n\n`prompt --wait` is the fresh-prompt barrier: it requires a new `working` report\nafter submission before accepting a later `completed`, `blocked`, or `idle`\nstate. Inspect `.result.activity.state`; `blocked` is a successful structured\noutcome, so surface its output or blocker instead of treating exit status zero\nas completion or blindly retrying.\n\nWait for work already in progress separately:\n\n```sh\nfut --json agent wait \"$terminal_id\" --timeout 2m\n```\n\nStandalone `agent wait` may return an already settled state immediately. It does\nnot establish a fresh prompt barrier. Treat `not_an_agent`, `agent_busy`,\n`agent_timeout`, `agent_events_lagged`, and `terminal_exited` as typed failures.\n\n## Report lifecycle from an integration\n\nOnly an integration for the process in that terminal should report lifecycle:\n\n```sh\nfut --json agent report idle --terminal-id \"$FUT_TERMINAL_ID\" --source codex\nfut --json agent report working --terminal-id \"$FUT_TERMINAL_ID\" --source codex --agent-session-id \"$agent_session_id\" --turn-id \"$turn_id\"\nfut --json agent report blocked --terminal-id \"$FUT_TERMINAL_ID\" --source codex --agent-session-id \"$agent_session_id\" --turn-id \"$turn_id\"\nfut --json agent report completed --terminal-id \"$FUT_TERMINAL_ID\" --source codex --agent-session-id \"$agent_session_id\" --turn-id \"$turn_id\"\n```\n\nInside Fut, `--terminal-id` may be omitted because `FUT_TERMINAL_ID` is used.\nDo not manufacture reports on behalf of another agent or infer semantic state\nfrom its screen.\n\n## Handle alternate-screen programs\n\nRecent history is unavailable while a full-screen program uses the alternate\nscreen. Fall back to its visible viewport:\n\n```sh\nfut --json agent read \"$terminal_id\" --source visible\nfut --json terminal read \"$terminal_id\" --source visible\n```\n\nPrefer `agent read` for integrated agents because it includes lifecycle and\navailability. Use raw `terminal read`, `send-text`, and `send-keys` for an\nunintegrated interactive program. Never screen-scrape a completion state when\nlifecycle reports are available.\n\n## Clean up only owned resources\n\nKeep the pane and terminal IDs returned by creation. Collect final output and\nstate before closing the pane:\n\n```sh\nfut --json agent get \"$created_terminal_id\"\nfut --json agent read \"$created_terminal_id\" --source recent-unwrapped --lines 200\nfut --json pane close \"$created_pane_id\"\n```\n\nIf the process is not an integrated agent, use `terminal read` before closing.\nClose only resources created for the current task unless the user explicitly\nrequests broader cleanup. Never select, attach to, or visually focus a resource\nmerely to inspect, control, wait for, or close it.\n",{"name":5,"description":7},"master","8d883d350240b10cc23da854de1fb212e889caed","agents.symlink\u002Fskills\u002Ffut",4,"https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Fmikker","https:\u002F\u002Fmikkelmalmberg.com\u002Fama","Top Highlight – research at @githubnext","2026-11-10 22:09:39",{"source":8,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add mikker\u002Fdotfiles --skill fut",{"tool":42,"command":43},"bunx","bunx skills add mikker\u002Fdotfiles --skill fut",{"tool":45,"command":46},"pnpm","pnpm dlx skills add mikker\u002Fdotfiles --skill fut","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fagents.symlink\u002Fskills\u002Ffut\u002FSKILL.md",true,[50],{"path":51,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":55},"LICENSE.txt","LICENSE","许可证",143,"https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fopencode\u002Fskills\u002Fseo-sitemap\u002FLICENSE.txt",[57,67,99,122,139,152],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":22},"01M6WFXRC2WZQA9G5AT4D6PCAY","unslop","Cut AI tells from any writing.","https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fagents.symlink\u002Fskills\u002Funslop\u002FSKILL.md",[],[59,64,65,66],"writing","cut","true",{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":71,"sourceHtmlUrl":72,"categories":73,"keywords":79,"publishedAt":22},"01M6WFWGJTZWZTVED8A7DHZSCB","stageshow","Build faux product UI that looks like a real product, as a still illustration or an animated demo with a cursor. Browser and app windows, dashboards, phones, notifications, terminals, bento grids and cursor walkthroughs, framed, masked and cropped the way a marketing page, feature card or docs hero needs them. Use whenever someone wants a fake or mocked UI, a product demo or walkthrough animation, a hero or feature-card illustration of an app, a product shot in the style of a polished marketing site, or an animated cursor doing things in an interface, even if they never say \"faux UI\". React and plain CSS.","https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fagents.symlink\u002Fskills\u002Fstageshow\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fagents.symlink\u002Fskills\u002Fstageshow\u002FSKILL.md",[74],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[69,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],"css","react","windows","browser","dashboards","product","ui","notifications","Animation","walkthrough","marketing","never","feature","as","app","framed","card","interface","hero",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":22},"01M6WFW0TZQ1H9C9X4HMZBTBYZ","clean-copy","Cut interface copy that shouldn't exist — captions that restate a label, hints that pre-empt a worry the user never had, warnings that are scar tissue from a fixed bug. Use when writing or reviewing any user-facing string (labels, hints, empty states, toasts, confirmations, button text), or when asked to clean up \u002F tighten copy.","https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fagents.symlink\u002Fskills\u002Fclean-copy\u002FSKILL.md",[],[106,107,108,97,109,110,111,112,113,114,64,115,116,117,118,91,119,120,65,121],"copy","clean copy","clean","labels","states","when","restate","empty","STRING","Captions","text","user","use","up","bug","tighten",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":22},"01M6BSWBGGT11ZA2BQ0EJH2ZBN","elyx","Elyx is a design tool with local, AI-friendly `.elyx` files for screens, components, layouts, flows, and design systems. This skill is only available to agents running in external harnesses while using the Elyx CLI. It is unavailable and must not be used when running in the ACP harness inside the Elyx app. In external harnesses, use this skill before reading, reasoning about, or answering any question that touches Elyx or `.elyx` files — authoring, editing, validating, inspecting, reviewing, refactoring, comparing, or recommending changes, including read-only analysis where you produce no edit. Do not reason about `.elyx` from source text alone; imports, instances, overrides, and layout only resolve through the tools.","https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fpi\u002Fskills\u002Felyx\u002FSKILL.md",[],[124,129,130,131,132,133,134,135,136,137,138],"acp","design","cli","components","reasoning","design systems","harness","produce","Tools","analysis",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":22},"01M6BSW8K6Z805WVG0670SHXY9","uikit-app-modernization","Modernizes UIKit apps for multi-window environments by replacing legacy shared-state APIs with context-appropriate modern alternatives. This includes references to mainScreen, interfaceOrientation, application and scene lifecycle, as well as safe area inset updates.","https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fagents.symlink\u002Fskills\u002Fxcode-skills\u002Fuikit-app-modernization\u002FSKILL.md",[],[146,147,148,149,150,151],"uikit app modernization","app modernization","modernization","safe","state","lifecycle",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":22},"01M6BSW5SCT7GQ4QX7CBSB4WF1","swiftui-whats-new-27","New SwiftUI APIs, behaviors, and deprecations in the 2027 OS releases (iOS 27 and aligned macOS\u002FwatchOS\u002FtvOS\u002FvisionOS). Consult when asked what's new in SwiftUI 27, or when working with: - @State compile errors after an SDK update (\"used before being initialized\", \"invalid redeclaration of synthesized property\") or @State becaming a macro - @ViewBuilder\u002F@ContentBuilder ambiguous overloads or type-check regressions; drag-to-reorder in any container (List, stacks, grids, custom layouts) via reorderable()\u002FreorderContainer and its drag-and-drop - AsyncImage caching, reloading on scroll, or a custom URLSession - Swipe actions outside List (ScrollView, LazyVStack, LazyVGrid) via swipeActions()\u002FswipeActionsContainer() - Toolbar overflow, visibility (visibilityPriority, ToolbarOverflowMenu, toolbarMinimizeBehavior), and pinning - Presenting a confirmationDialog or alert from an optional item binding","https:\u002F\u002Fgithub.com\u002Fmikker\u002Fdotfiles\u002Fblob\u002Fmaster\u002Fagents.symlink\u002Fskills\u002Fxcode-skills\u002Fswiftui-whats-new-27\u002FSKILL.md",[],[159,160,161,150,162,163,164,165,166],"swiftui whats new 27","sdk","update","compile","actions","ios","macro","macos"]