[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BYNERF0Q4PDM5KZNJRYKFA":3,"skill-same:01M6BYNERF0Q4PDM5KZNJRYKFA":74},{"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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":26,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":45,"install":46,"resources":59},"01M6BYNERF0Q4PDM5KZNJRYKFA","pr",null,"Use when writing a PR body.","Vortex375\u002Fseraph","Vortex375","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5016523?v=4","01M6BYMHA5FQE4EMD6BSZ13M46","Benjamin Schmitz","01M6BYMHEYGQ7DM3Q8A7KBNZ48",2,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpr\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31],"writing","github","https","plugins","use","show","dex","main","me","pr body","body","blob","when","2026-11-10 10:12:30",false,"---\nname: python-mcp-server-generator\ndescription: 'Use this skill when the user wants to create a new Model Context Protocol (MCP) server in Python. Also use it to expose Python functions, an API, or a database to AI clients as MCP tools. The skill makes a uv project with the MCP Python SDK v2 (MCPServer), typed tools, in-memory tests, and client configuration. Do not use it for an MCP client or for a server in another language.'\ncompatibility: 'Requires uv, Python 3.10 or later, and network access to install packages. The MCP Inspector also requires Node.js.'\n---\n\n# Python MCP Server Generator\n\nCreate a Model Context Protocol (MCP) server in Python with the official [MCP Python SDK](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fpython-sdk) v2. SDK v2 supports the MCP specification revision [2026-07-28](https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2026-07-28). The same server also serves clients that use earlier revisions.\n\n## Workflow\n\nCopy this checklist and track your progress:\n\n- [ ] Step 1: Create the project.\n- [ ] Step 2: Write the server.\n- [ ] Step 3: Write the tests.\n- [ ] Step 4: Run the tests until they pass.\n- [ ] Step 5: Configure the client.\n\n### Step 1: Create the project\n\nRun these commands:\n\n```bash\nuv init --app --no-package project-name\ncd project-name\nuv add \"mcp[cli]>=2,\u003C3\"\nuv add --dev pytest\n```\n\nThen delete `main.py`. The server goes in `server.py`.\n\n- Without `--no-package`, uv makes a `src\u002F` package layout, and the tests cannot import `server.py`.\n- `uv init` makes the `.gitignore` file. Do not write a different one.\n\n### Step 2: Write the server\n\nStart from this template:\n\n```python\nfrom mcp.server import MCPServer\nfrom mcp.server.mcpserver.exceptions import ToolError\n\nmcp = MCPServer(\"Demo\", version=\"0.1.0\")\n\n\n@mcp.tool()\ndef divide(a: float, b: float) -> float:\n    \"\"\"Divide a by b.\"\"\"\n    if b == 0:\n        raise ToolError(\"b must not be zero.\")\n    return a \u002F b\n\n\nif __name__ == \"__main__\":\n    mcp.run()  # stdio is the default transport\n```\n\nThen change the template for the request of the user:\n\n1. Replace `divide` with the tools that the user needs.\n2. Give each tool full type hints and a docstring. The SDK makes the input schema from the type hints. The docstring becomes the tool description.\n3. Return a Pydantic model or a `TypedDict` when the client needs machine-readable data. The SDK makes the output schema from the return type.\n4. Use `async def` for I\u002FO. The SDK runs a sync tool on a worker thread.\n5. Mark a read-only tool with `@mcp.tool(annotations=ToolAnnotations(read_only_hint=True))` (from `mcp.types`). Use `destructive_hint=True` for a destructive tool.\n6. Add resources (`@mcp.resource(\"users:\u002F\u002F{user_id}\")`) and prompts (`@mcp.prompt()`) only when the user asks for them.\n\nUse stdio by default. Read [references\u002Fstreamable-http.md](references\u002Fstreamable-http.md) only when the user asks for a remote server or an HTTP server.\n\n### Step 3: Write the tests\n\nPut `test_server.py` next to `server.py`. Write a test for each tool and for each `ToolError`:\n\n```python\nimport pytest\n\nfrom mcp import Client\n\nfrom server import mcp\n\n\n@pytest.mark.anyio\nasync def test_divide():\n    async with Client(mcp) as client:\n        result = await client.call_tool(\"divide\", {\"a\": 6, \"b\": 3})\n        assert result.structured_content == {\"result\": 2.0}\n\n\n@pytest.mark.anyio\nasync def test_divide_by_zero():\n    async with Client(mcp) as client:\n        result = await client.call_tool(\"divide\", {\"a\": 1, \"b\": 0})\n        assert result.is_error\n        assert \"must not be zero\" in result.content[0].text\n```\n\n- The in-memory `Client` needs no subprocess and no port. It connects with the 2026-07-28 revision.\n- The `mcp` package installs `anyio`, which supplies the `anyio` marker. Do not add `pytest-asyncio`.\n\n### Step 4: Run the tests until they pass\n\n1. Run `uv run pytest`.\n2. If a test fails, read the error. Fix the server or the test.\n3. Run `uv run pytest` again.\n4. Continue only when all tests pass.\n\n### Step 5: Configure the client\n\nFor VS Code, write `.vscode\u002Fmcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"demo\": {\n      \"type\": \"stdio\",\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"\u002Fabsolute\u002Fpath\u002Fto\u002Fproject\", \"run\", \"server.py\"]\n    }\n  }\n}\n```\n\nFor Claude Desktop, run `uv run mcp install server.py`.\n\nTell the user these commands:\n\n- `uv run server.py` starts the stdio server. The server waits for a host on stdin and prints nothing.\n- `uv run mcp dev server.py` opens the MCP Inspector. The Inspector needs Node.js.\n\n## Gotchas\n\nSDK v2 and the 2026-07-28 revision changed many SDK v1 patterns. Do not copy SDK v1 examples.\n\n- SDK v2 removed `FastMCP` and `mcp.server.fastmcp`. Import the server class with `from mcp.server import MCPServer`.\n- Import `Context`, `Image`, `Audio`, `Resolve`, `Elicit`, `ElicitationResult`, `AcceptedElicitation`, `Message`, `UserMessage`, and `AssistantMessage` from `mcp.server.mcpserver`.\n- Give the server name as the first `MCPServer` argument. Give all other constructor arguments as keyword arguments. Their positional order changed in SDK v2.\n- Set `version`. If you do not set it, the server reports an empty version.\n- Give the transport options (`transport`, `host`, `port`, `json_response`, `stateless_http`, `transport_security`) to `run()`, not to `MCPServer(...)`.\n- The SDK v2 types use snake_case fields, for example `read_only_hint`, `structured_content`, and `is_error`.\n- Raise `ToolError` for an error that the model must read. For other exceptions, the model gets only a generic error message.\n- Do not raise `MCPError` for a tool failure. The client gets a protocol error, not a tool result with `is_error`. Many hosts do not show this error to the model.\n- In a stdio server, stdout is the protocol channel. Do not call `print()`. Log to stderr with the `logging` module.\n- Do not use `ctx.elicit()`. It fails on a 2026-07-28 connection. For user input during a tool call, annotate a parameter with `Resolve(fn)`. Return `Elicit(message, Model)` from `fn`.\n- Send list change notifications with `await ctx.notify_tools_changed()`. A 2026-07-28 connection drops `ctx.session.send_tool_list_changed()`.\n- For stdio and HTTP, the lifespan runs one time, when the server starts. Each in-memory `Client(mcp)` in a test runs the lifespan again. Read its object with `ctx.request_context.lifespan_context`.\n- The 2026-07-28 revision deprecates these features ([SEP-2577](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fmodelcontextprotocol\u002Fpull\u002F2577)). Do not add them to a new server:\n  - **Sampling** (`ctx.session.create_message()`): Call the LLM provider API directly.\n  - **Protocol logging** (`ctx.log()`, `ctx.info()`, and similar methods): Use the standard `logging` module.\n  - **Roots** (`ctx.session.list_roots()`): Get paths from tool parameters, resource URIs, or the server configuration.\n- The 2026-07-28 revision has no SSE transport. Use Streamable HTTP.\n","# Python MCP Server Generator\n\nCreate a Model Context Protocol (MCP) server in Python with the official [MCP Python SDK](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fpython-sdk) v2. SDK v2 supports the MCP specification revision [2026-07-28](https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2026-07-28). The same server also serves clients that use earlier revisions.\n\n## Workflow\n\nCopy this checklist and track your progress:\n\n- [ ] Step 1: Create the project.\n- [ ] Step 2: Write the server.\n- [ ] Step 3: Write the tests.\n- [ ] Step 4: Run the tests until they pass.\n- [ ] Step 5: Configure the client.\n\n### Step 1: Create the project\n\nRun these commands:\n\n```bash\nuv init --app --no-package project-name\ncd project-name\nuv add \"mcp[cli]>=2,\u003C3\"\nuv add --dev pytest\n```\n\nThen delete `main.py`. The server goes in `server.py`.\n\n- Without `--no-package`, uv makes a `src\u002F` package layout, and the tests cannot import `server.py`.\n- `uv init` makes the `.gitignore` file. Do not write a different one.\n\n### Step 2: Write the server\n\nStart from this template:\n\n```python\nfrom mcp.server import MCPServer\nfrom mcp.server.mcpserver.exceptions import ToolError\n\nmcp = MCPServer(\"Demo\", version=\"0.1.0\")\n\n\n@mcp.tool()\ndef divide(a: float, b: float) -> float:\n    \"\"\"Divide a by b.\"\"\"\n    if b == 0:\n        raise ToolError(\"b must not be zero.\")\n    return a \u002F b\n\n\nif __name__ == \"__main__\":\n    mcp.run()  # stdio is the default transport\n```\n\nThen change the template for the request of the user:\n\n1. Replace `divide` with the tools that the user needs.\n2. Give each tool full type hints and a docstring. The SDK makes the input schema from the type hints. The docstring becomes the tool description.\n3. Return a Pydantic model or a `TypedDict` when the client needs machine-readable data. The SDK makes the output schema from the return type.\n4. Use `async def` for I\u002FO. The SDK runs a sync tool on a worker thread.\n5. Mark a read-only tool with `@mcp.tool(annotations=ToolAnnotations(read_only_hint=True))` (from `mcp.types`). Use `destructive_hint=True` for a destructive tool.\n6. Add resources (`@mcp.resource(\"users:\u002F\u002F{user_id}\")`) and prompts (`@mcp.prompt()`) only when the user asks for them.\n\nUse stdio by default. Read [references\u002Fstreamable-http.md](references\u002Fstreamable-http.md) only when the user asks for a remote server or an HTTP server.\n\n### Step 3: Write the tests\n\nPut `test_server.py` next to `server.py`. Write a test for each tool and for each `ToolError`:\n\n```python\nimport pytest\n\nfrom mcp import Client\n\nfrom server import mcp\n\n\n@pytest.mark.anyio\nasync def test_divide():\n    async with Client(mcp) as client:\n        result = await client.call_tool(\"divide\", {\"a\": 6, \"b\": 3})\n        assert result.structured_content == {\"result\": 2.0}\n\n\n@pytest.mark.anyio\nasync def test_divide_by_zero():\n    async with Client(mcp) as client:\n        result = await client.call_tool(\"divide\", {\"a\": 1, \"b\": 0})\n        assert result.is_error\n        assert \"must not be zero\" in result.content[0].text\n```\n\n- The in-memory `Client` needs no subprocess and no port. It connects with the 2026-07-28 revision.\n- The `mcp` package installs `anyio`, which supplies the `anyio` marker. Do not add `pytest-asyncio`.\n\n### Step 4: Run the tests until they pass\n\n1. Run `uv run pytest`.\n2. If a test fails, read the error. Fix the server or the test.\n3. Run `uv run pytest` again.\n4. Continue only when all tests pass.\n\n### Step 5: Configure the client\n\nFor VS Code, write `.vscode\u002Fmcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"demo\": {\n      \"type\": \"stdio\",\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"\u002Fabsolute\u002Fpath\u002Fto\u002Fproject\", \"run\", \"server.py\"]\n    }\n  }\n}\n```\n\nFor Claude Desktop, run `uv run mcp install server.py`.\n\nTell the user these commands:\n\n- `uv run server.py` starts the stdio server. The server waits for a host on stdin and prints nothing.\n- `uv run mcp dev server.py` opens the MCP Inspector. The Inspector needs Node.js.\n\n## Gotchas\n\nSDK v2 and the 2026-07-28 revision changed many SDK v1 patterns. Do not copy SDK v1 examples.\n\n- SDK v2 removed `FastMCP` and `mcp.server.fastmcp`. Import the server class with `from mcp.server import MCPServer`.\n- Import `Context`, `Image`, `Audio`, `Resolve`, `Elicit`, `ElicitationResult`, `AcceptedElicitation`, `Message`, `UserMessage`, and `AssistantMessage` from `mcp.server.mcpserver`.\n- Give the server name as the first `MCPServer` argument. Give all other constructor arguments as keyword arguments. Their positional order changed in SDK v2.\n- Set `version`. If you do not set it, the server reports an empty version.\n- Give the transport options (`transport`, `host`, `port`, `json_response`, `stateless_http`, `transport_security`) to `run()`, not to `MCPServer(...)`.\n- The SDK v2 types use snake_case fields, for example `read_only_hint`, `structured_content`, and `is_error`.\n- Raise `ToolError` for an error that the model must read. For other exceptions, the model gets only a generic error message.\n- Do not raise `MCPError` for a tool failure. The client gets a protocol error, not a tool result with `is_error`. Many hosts do not show this error to the model.\n- In a stdio server, stdout is the protocol channel. Do not call `print()`. Log to stderr with the `logging` module.\n- Do not use `ctx.elicit()`. It fails on a 2026-07-28 connection. For user input during a tool call, annotate a parameter with `Resolve(fn)`. Return `Elicit(message, Model)` from `fn`.\n- Send list change notifications with `await ctx.notify_tools_changed()`. A 2026-07-28 connection drops `ctx.session.send_tool_list_changed()`.\n- For stdio and HTTP, the lifespan runs one time, when the server starts. Each in-memory `Client(mcp)` in a test runs the lifespan again. Read its object with `ctx.request_context.lifespan_context`.\n- The 2026-07-28 revision deprecates these features ([SEP-2577](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fmodelcontextprotocol\u002Fpull\u002F2577)). Do not add them to a new server:\n  - **Sampling** (`ctx.session.create_message()`): Call the LLM provider API directly.\n  - **Protocol logging** (`ctx.log()`, `ctx.info()`, and similar methods): Use the standard `logging` module.\n  - **Roots** (`ctx.session.list_roots()`): Get paths from tool parameters, resource URIs, or the server configuration.\n- The 2026-07-28 revision has no SSE transport. Use Streamable HTTP.\n",{"name":37,"description":38,"compatibility":39},"python-mcp-server-generator","Use this skill when the user wants to create a new Model Context Protocol (MCP) server in Python. Also use it to expose Python functions, an API, or a database to AI clients as MCP tools. The skill makes a uv project with the MCP Python SDK v2 (MCPServer), typed tools, in-memory tests, and client configuration. Do not use it for an MCP client or for a server in another language.","Requires uv, Python 3.10 or later, and network access to install packages. The MCP Inspector also requires Node.js.","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd",".agents\u002Fskills\u002Fpr",0,"https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph","https:\u002F\u002Fgithub.com\u002FVortex375","2026-11-08 18:46:14",{"source":8,"skillName":37,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add Vortex375\u002Fseraph --skill python-mcp-server-generator",{"tool":52,"command":53},"bunx","bunx skills add Vortex375\u002Fseraph --skill python-mcp-server-generator",{"tool":55,"command":56},"pnpm","pnpm dlx skills add Vortex375\u002Fseraph --skill python-mcp-server-generator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpr\u002FSKILL.md",true,[60,66,70],{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"agents\u002Fopenai.yaml","REFERENCE","参考文档",93,"https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpr\u002Fagents\u002Fopenai.yaml",{"path":67,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":68,"sourceHtmlUrl":69},"CREDITS.md",604,"https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpr\u002FCREDITS.md",{"path":71,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fstreamable-http.md",1939,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fpython-mcp-server-generator\u002Freferences\u002Fstreamable-http.md",[75,96,121,146,162,181],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":91,"publishedAt":32},"01M6BYS1QVW7F887EXS5RR34TA","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002Fapp\u002Fseraph_app\u002F.agents\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[81,86],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[19,92,93,31,23,94,95],"for","writing for agents","editing","documents",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":32},"01M6BYRZNREK0C7V6Y43AKDJWW","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002Fapp\u002Fseraph_app\u002F.agents\u002Fskills\u002Fwizard\u002FSKILL.md",[],[98,103,104,105,106,107,108,109,31,110,111,92,112,113,114,115,116,117,23,118,119,120],"provisioning","ci","generate","infrastructure","dashboard","can","running","invoke","party","credentials","human","provisioning infrastructure","migration","up","only","interactive","Bash","secrets",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":32},"01M6BYRY92S448X31PTG25TCJC","wayfinder","Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002Fapp\u002Fseraph_app\u002F.agents\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[123,128,129,130,108,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145],"at","map","agent session","time","true","shared","more","tickets","as","clear","issue","session","one at a time","work","decision","plan","chunk","tracker",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":32},"01M6BYRWXMYWB6PD7E9PAD44M4","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002Fapp\u002Fseraph_app\u002F.agents\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[153,154,155,132,156,157,158,159,160,161],"wait what","wait","re","last","it","pitch","message","stop","land",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":32},"01M6BYRTS6JNDYB7BZVAWK7JJ9","triage","Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.","https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002Fapp\u002Fseraph_app\u002F.agents\u002Fskills\u002Ftriage\u002FSKILL.md",[],[164,169,170,171,172,173,174,175,176,177,178,179,132,180],"machine","roles","grill","ready","write","verify","issues","state","move","prs","state machine","briefs",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":32},"01M6BYRRRCDHNXH2YBDTYJPG36","to-tickets","Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker (edges as text in one file per ticket locally, or native blocking links on a real tracker).","https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002Fapp\u002Fseraph_app\u002F.agents\u002Fskills\u002Fto-tickets\u002FSKILL.md",[],[188,135,189,190,191,132,192,193,136,194,145,195,143,196,197],"to tickets","spec","links","break","native","ticket","conversation","text","SET","file"]