[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71F1DFZ0C4AWB2W8FDPRDVG":3,"skill-same:01M71F1DFZ0C4AWB2W8FDPRDVG":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M71F1DFZ0C4AWB2W8FDPRDVG","jinna-mcp-recipe",null,"Install and use the local OpenProject provider MCP through ai-specs; detect the provider binary, configure OpenProject environment references, and keep local\u002Fofficial MCP boundaries explicit.","parada1104\u002Fai-specs-cli","parada1104","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F57575053?v=4","01M71EZZV71KAFZKJ47FQ99ZVS","01M71EZZW7JJBY2VAWA5HRD944",0,"MIT","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Fcatalog\u002Frecipes\u002Fjinna-mcp-recipe\u002Fskills\u002Fjinna-mcp-recipe\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"recipe","MCP","jinna mcp recipe","openproject","binary","keep","configure","troubleshooting","use","install","local","environment","provider","runtime","detect","official","references","2026-11-10 10:12:30",false,"---\nname: jinna-mcp-recipe\ndescription: Install and use the local OpenProject provider MCP through ai-specs; detect the provider binary, configure OpenProject environment references, and keep local\u002Fofficial MCP boundaries explicit.\nlicense: MIT\nmetadata:\n  author: ai-specs\n  version: \"1.0\"\n  scope: runtime\n  auto_invoke:\n    - \"Using the OpenProject provider MCP\"\n    - \"Configuring jinna-mcp-recipe\"\n    - \"Installing or troubleshooting the OpenProject provider\"\n---\n\n# OpenProject provider MCP\n\n## Terminology\n\n- **Provider:** the separate Go project `parada1104\u002Fjinna-provider`.\n- **Provider binary:** the local executable `jinna`.\n- **OpenProject:** the remote Self-Hosted service configured by `OPENPROJECT_BASE_URL`.\n- **Local MCP:** `jinna mcp`, a stdio server that uses OpenProject APIv3.\n- **Python client:** reference-only material; do not require or invoke it.\n\n## Installation flow\n\n1. Check the provider dependency through `ai-specs doctor` or the recipe configuration flow.\n2. Reuse a compatible `jinna` found on `PATH`.\n3. If it is missing or incompatible, run `ai-specs configure-recipes` interactively and review the GitHub Release plan before accepting installation.\n4. The installer selects the host target, verifies the provider archive with `SHA256SUMS`, validates archive contents, checks `jinna version`, and publishes atomically.\n5. Run `ai-specs sync` after installation so the generated MCP configuration uses either `jinna` or the verified managed executable path.\n\nNever assume that OpenProject itself is installed locally. Never require Go, Mise, Python, Git, GitHub CLI, or a package manager for a provider release binary.\n\n## Configuration\n\nKeep credentials outside generated files:\n\n```text\nOPENPROJECT_BASE_URL\nOPENPROJECT_API_TOKEN\nOPENPROJECT_AUTH (optional: basic or bearer)\n```\n\nUse the existing ai-specs environment flow and user-owned ignored environment file. Do not put token values in MCP arguments, manifests, documentation, logs, or tool payloads.\n\n## MCP boundary\n\nUse the recipe-provided local `jinna mcp` server. The official OpenProject remote `\u002Fmcp` endpoint is a separate operator-selected option with its own server configuration and authentication. Do not automatically proxy, switch, or replay writes between these protocols.\n\n## Runtime boundary\n\n`ai-specs sync` and `ai-specs doctor` are local materialization checks; they do not contact OpenProject. Live diagnostics are opt-in commands:\n\n- `jinna health`\n- `jinna whoami`\n\nThose commands make a live request to the configured service, and no passive command runs them automatically. The recipe's 30-second MCP timeout bounds local `jinna mcp` startup and transport, not the remote OpenProject API SLA. Keep slow or unavailable self-hosted service behavior visible: do not hide it with automatic retries, proxy fallback, endpoint switching, or write replay.\n\n## Safe troubleshooting\n\n- Missing provider: configure interactively and accept the allowlisted GitHub Release plan, or follow the printed manual URL.\n- Unknown version: treat the provider as unresolved until `jinna version` succeeds.\n- Checksum or archive failure: do not execute the candidate; retain the previous managed version.\n- Missing OpenProject settings: complete environment configuration; provider installation itself does not contact OpenProject.\n- Non-interactive or CI run: expect detection and guidance only, never a download.\n","# OpenProject provider MCP\n\n## Terminology\n\n- **Provider:** the separate Go project `parada1104\u002Fjinna-provider`.\n- **Provider binary:** the local executable `jinna`.\n- **OpenProject:** the remote Self-Hosted service configured by `OPENPROJECT_BASE_URL`.\n- **Local MCP:** `jinna mcp`, a stdio server that uses OpenProject APIv3.\n- **Python client:** reference-only material; do not require or invoke it.\n\n## Installation flow\n\n1. Check the provider dependency through `ai-specs doctor` or the recipe configuration flow.\n2. Reuse a compatible `jinna` found on `PATH`.\n3. If it is missing or incompatible, run `ai-specs configure-recipes` interactively and review the GitHub Release plan before accepting installation.\n4. The installer selects the host target, verifies the provider archive with `SHA256SUMS`, validates archive contents, checks `jinna version`, and publishes atomically.\n5. Run `ai-specs sync` after installation so the generated MCP configuration uses either `jinna` or the verified managed executable path.\n\nNever assume that OpenProject itself is installed locally. Never require Go, Mise, Python, Git, GitHub CLI, or a package manager for a provider release binary.\n\n## Configuration\n\nKeep credentials outside generated files:\n\n```text\nOPENPROJECT_BASE_URL\nOPENPROJECT_API_TOKEN\nOPENPROJECT_AUTH (optional: basic or bearer)\n```\n\nUse the existing ai-specs environment flow and user-owned ignored environment file. Do not put token values in MCP arguments, manifests, documentation, logs, or tool payloads.\n\n## MCP boundary\n\nUse the recipe-provided local `jinna mcp` server. The official OpenProject remote `\u002Fmcp` endpoint is a separate operator-selected option with its own server configuration and authentication. Do not automatically proxy, switch, or replay writes between these protocols.\n\n## Runtime boundary\n\n`ai-specs sync` and `ai-specs doctor` are local materialization checks; they do not contact OpenProject. Live diagnostics are opt-in commands:\n\n- `jinna health`\n- `jinna whoami`\n\nThose commands make a live request to the configured service, and no passive command runs them automatically. The recipe's 30-second MCP timeout bounds local `jinna mcp` startup and transport, not the remote OpenProject API SLA. Keep slow or unavailable self-hosted service behavior visible: do not hide it with automatic retries, proxy fallback, endpoint switching, or write replay.\n\n## Safe troubleshooting\n\n- Missing provider: configure interactively and accept the allowlisted GitHub Release plan, or follow the printed manual URL.\n- Unknown version: treat the provider as unresolved until `jinna version` succeeds.\n- Checksum or archive failure: do not execute the candidate; retain the previous managed version.\n- Missing OpenProject settings: complete environment configuration; provider installation itself does not contact OpenProject.\n- Non-interactive or CI run: expect detection and guidance only, never a download.\n",{"name":5,"license":14,"metadata":45,"description":7},{"scope":36,"author":46,"version":47,"auto_invoke":48},"ai-specs","1.0",[49,50,51],"Using the OpenProject provider MCP","Configuring jinna-mcp-recipe","Installing or troubleshooting the OpenProject provider","main","c092fc1f51280350a4434827e2f6d6d99e3431ca","catalog\u002Frecipes\u002Fjinna-mcp-recipe\u002Fskills\u002Fjinna-mcp-recipe",2,"https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli","https:\u002F\u002Fgithub.com\u002Fparada1104","2026-11-08 05:20:31",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add parada1104\u002Fai-specs-cli --skill jinna-mcp-recipe",{"tool":65,"command":66},"bunx","bunx skills add parada1104\u002Fai-specs-cli --skill jinna-mcp-recipe",{"tool":68,"command":69},"pnpm","pnpm dlx skills add parada1104\u002Fai-specs-cli --skill jinna-mcp-recipe","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Fcatalog\u002Frecipes\u002Fjinna-mcp-recipe\u002Fskills\u002Fjinna-mcp-recipe\u002FSKILL.md",true,[],[74,92,106,115,124,137],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":84,"publishedAt":40},"01M71F2TF9TS9DNCJ68M7C3B5S","test-skill","Test skill for fixture purposes.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Frecipes\u002Ftest-fixture\u002Fskills\u002Ftest-skill\u002FSKILL.md",[80,83],{"categoryNo":81,"categoryName":82,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[85,86,87,88,89,90,91],"Test Skill","test","for","root","fixtures","fixture","testing",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":101,"publishedAt":40},"01M71F2RTH94ZB7XEAW4P6ZG0D","obsidian-markdown","Fixture skill for obsidian-markdown.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fobsidian-markdown\u002FSKILL.md",[98],{"categoryNo":99,"categoryName":100,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000002","文档处理",[102,103,104,87,90,105],"markdown","obsidian markdown","obsidian","fixture skill",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":40},"01M71F2R20CPTJXD9F7DP4JPP6","obsidian-cli","Fixture skill for obsidian-cli.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fobsidian-cli\u002FSKILL.md",[],[113,104,114,87,90,105],"obsidian cli","cli",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":40},"01M71F2PCH4NWVTT1J57SHJX33","obsidian-bases","Fixture skill for obsidian-bases.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fobsidian-bases\u002FSKILL.md",[],[122,123,104,87,90,105],"bases","obsidian bases",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":133,"publishedAt":40},"01M71F2MSS6EVFEYVYAA1KBYCC","json-canvas","Fixture skill for json-canvas.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fjson-canvas\u002FSKILL.md",[130],{"categoryNo":131,"categoryName":132,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",[134,135,136,105,90,87],"json","json canvas","canvas",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":40},"01M71F2KY5QVNEN1Q3REFB0MQZ","defuddle","Fixture skill for defuddle.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fdefuddle\u002FSKILL.md",[],[139,105,90,87]]