{"id":"91fdb4b0-4240-4c55-ae8e-787d5caf58cd","shortId":"vefG7B","kind":"skill","title":"vigilante-create-issue","tagline":"Help a human author write an implementation-ready GitHub issue that Vigilante can execute reliably.","description":"# Vigilante Create Issue\n\n## Overview\nUse this skill when a human wants to write or refine a GitHub issue that Vigilante will later implement. The default goal is to turn a vague request into an issue with enough behavioral detail, constraints, and verification criteria for a headless coding agent to execute safely, then create that issue on GitHub. If creation is not possible, fall back to returning a ready-to-file issue body. The goal is not to design the full solution for them.\n\n## Outcome\nProduce a GitHub issue that is:\n\n- classified as a `feature`, `bug`, or `task` before the draft is finalized\n- specific about the problem and why it matters\n- grounded in repository or product context\n- explicit about expected behavior and non-goals\n- realistic about implementation flexibility and hard constraints\n- testable through concrete acceptance criteria\n- clear about validation and regression coverage\n- created on GitHub by default when the target repository can be resolved and `gh` issue creation is available\n- returned as a polished Markdown draft only when the user explicitly asks for draft-only output or issue creation is blocked\n\n## Workflow\n1. Clarify the request before writing\n- Identify the change the user actually wants.\n- Ask for missing repository, product, or user context when it affects implementation.\n- Separate required behavior from guesses or preferences.\n\n2. Classify the request before finalizing the issue body\n- Decide whether the request is best treated as a `feature`, `bug`, or `task`.\n- Base the classification on the user's stated problem and desired outcome rather than implementation details.\n- If the request is ambiguous, infer the most likely type and state briefly that the type was inferred.\n- Use the selected type to decide which details are required in the issue body, not just to append a label.\n\n3. Resolve the target repository before finalizing output\n- Prefer local git context first when the user is working inside a repository.\n- Otherwise use an explicitly provided repository slug or URL.\n- If the repository cannot be resolved confidently, say so briefly and fall back to returning the ready-to-file issue body instead of guessing.\n\n4. Frame the issue around execution\n- Write for the agent that will implement the issue later, not for a broad brainstorming audience.\n- Prefer observable behavior over vague aspirations.\n- Note any constraints that must be preserved: CLI flags, APIs, config compatibility, UX expectations, rollout limits, or performance boundaries.\n\n5. Capture implementation guidance without over-constraining\n- Include likely solution paths when they materially reduce ambiguity.\n- Mark which implementation details are required and which are flexible.\n- Call out known tradeoffs or rejected alternatives when relevant.\n\n6. Make completion testable\n- Convert expectations into pass/fail acceptance criteria.\n- State what tests should be added or updated.\n- Mention the key regressions or failure modes that must be prevented.\n\n7. Create the GitHub issue by default\n- When the repository is known and the user did not explicitly ask for draft-only output, use `vigilante gh issue create` to open the issue.\n- Prefer `vigilante gh api repos/{owner}/{repo}/issues` over `vigilante gh issue create` when opening the final issue so Vigilante can set GitHub's native issue type with the request body `type` field.\n- Map Vigilante's internal classifications explicitly to GitHub's native issue types: `feature` -> `Feature`, `bug` -> `Bug`, `task` -> `Task`.\n- Treat the native GitHub issue type as the source of truth whenever the repository supports it.\n- When the draft explicitly says the new issue is a follow-up, child, or sub-issue of a specific existing issue, carry that parent issue number through issue creation.\n- After the base issue is created, attach it as a native GitHub sub-issue of that parent with `vigilante gh api --method POST repos/{owner}/{repo}/issues/{parent_issue_number}/sub_issues -f sub_issue_id={created_issue_id}`.\n- Only create a native relationship when the parent mapping is explicit and low-ambiguity; incidental issue-number mentions in prose are not enough.\n- If native sub-issue creation fails or the repository does not support it, keep the created issue, preserve the body text reference, and make the fallback explicit in the final response.\n- Use the polished Markdown body as the issue content instead of stopping at the draft.\n- In the final response, include the created issue URL or issue number and keep the body available if useful.\n\n8. Fall back cleanly when issue creation is blocked\n- If issue creation cannot be completed because repository context is missing, `gh` auth is unavailable, network access is blocked, or sandbox restrictions prevent GitHub access, say so briefly and return the ready-to-file Markdown issue instead.\n- If the repository rejects the native `type` field because issue types are unavailable or unsupported, retry issue creation without the native type and make the fallback explicit in the final response.\n- If the native sub-issue relationship request is rejected or unsupported, do not fail the overall issue creation flow; keep the new issue and report that the relationship fell back to body-only text.\n- If the environment supports requesting escalation for GitHub/network access, do that before giving up.\n- If the user explicitly asks for a draft only, honor that request and do not create the issue.\n- Keep failure messaging short, specific, and factual.\n\n## Issue Type Guidance\n- Always classify the request as `feature`, `bug`, or `task` before finalizing the issue.\n- When creating the issue on GitHub, write that classification into GitHub's native issue type field whenever the repository supports it.\n- Do not use labels or issue-body text as the primary type representation when the native issue type is set successfully.\n- Do not infer parent/child issue links from vague wording or unrelated issue references.\n- Only include an `Issue Type: ...` line in the issue body when returning a draft without creating the issue, or when native issue types are unavailable and the fallback needs to preserve the classification explicitly.\n- When the type was inferred from an ambiguous request, note that clearly, for example `Issue Type: task (inferred)`, but only in the draft/fallback body when that line is needed.\n- For `bug` issues, prioritize current behavior, expected behavior, impact, reproduction clues, and regression risk.\n- For `feature` issues, prioritize the desired user-facing outcome, scope boundaries, and non-goals.\n- For `task` issues, prioritize the concrete deliverable, operational context, constraints, and completion conditions.\n\n## Required Sections\nEvery issue draft should cover these sections when relevant:\n\n1. Problem statement\n- What is wrong, missing, or desired?\n- Why does this matter now?\n\n2. Context\n- What repository, product, or workflow context does the implementer need?\n- What is the current behavior?\n- Who is affected?\n- What assumptions or constraints are already known?\n\n3. Desired outcome\n- What should be true after implementation?\n- What is explicitly out of scope?\n\n4. Possible implementation approaches\n- What are the most plausible solution paths?\n- Which details are required versus flexible?\n- What tradeoffs should the implementer understand?\n\n5. Acceptance criteria\n- Use explicit, testable statements.\n- Prefer behavior-focused checks over generic wording like \"works correctly.\"\n\n6. Testing expectations\n- State which test layers matter: unit, integration, CLI, workflow, end-to-end, or manual verification.\n- Mention critical regressions and failure modes that need coverage.\n\n7. Operational or UX considerations\n- Include logging, migrations, config compatibility, docs, observability, rollout, or backward compatibility concerns when applicable.\n\n## Issue Quality Rules\n- Do not leave \"should support X\" statements undefined when the expected behavior can be stated concretely.\n- Do not hide key constraints inside prose if they materially affect implementation.\n- Do not invent repository details that were not provided. Flag missing context instead.\n- Do not overload the issue with speculative architecture unless the decision matters to execution.\n- Do include non-goals so the eventual implementation stays narrow.\n- Do include exact commands, files, components, or workflows when they are already known.\n\n## Recommended Questions To Ask\nUse these to tighten the issue before drafting:\n\n- What exactly should change?\n- What currently happens instead?\n- Why is the change needed?\n- What constraints must the implementation respect?\n- Which solution options are acceptable, and which are not?\n- How will we know the issue is done?\n- What tests prove the change works?\n- What regressions must be prevented?\n\n## Output Template\nUse this structure for the issue body:\n\n```md\n## Summary\n<One short paragraph describing the problem and desired change.>\n\nIssue Type: <feature | bug | task>[ (inferred)]  <!-- include only for draft-only or documented fallback output -->\n\n## Problem\n- <What is wrong, missing, or desired>\n- <Why it matters>\n\n## Context\n- <Current behavior>\n- <Relevant repo, product, or workflow details>\n- <Constraints or assumptions>\n\n## Desired Outcome\n- <Expected end-state>\n- <Non-goals or out-of-scope items>\n\n## Implementation Notes\n- <Likely approach or options>\n- <Required constraints vs flexible details>\n- <Tradeoffs, if relevant>\n\n## Acceptance Criteria\n- [ ] <Specific observable behavior>\n- [ ] <Specific observable behavior>\n\n## Testing Expectations\n- <Tests to add or update>\n- <Failure modes or regressions to cover>\n\n## Operational / UX Considerations\n- <Docs, logging, migration, compatibility, rollout, observability, etc.>\n```\n\nType-specific reminders:\n\n- `bug`: include current behavior, expected behavior, impact, and reproduction clues when available.\n- `feature`: include the desired outcome, boundaries, and explicit non-goals.\n- `task`: include the deliverable, operational context, constraints, and concrete done criteria.\n\n## Final Checks\nBefore creating the issue or returning the fallback draft, verify that:\n\n- the problem is understandable without extra oral context\n- the selected issue type is `feature`, `bug`, or `task`\n- the native GitHub issue type is used when the issue is created in a repository that supports it\n- explicit follow-up or child relationships are attached as native GitHub sub-issues when the parent issue is clearly identified\n- ambiguous issue references do not create native parent/child links\n- any `Issue Type:` line in the body is reserved for draft-only or explicit fallback output\n- the desired outcome is observable\n- the acceptance criteria are testable\n- the testing section names the expected validation\n- the body includes the type-specific details that matter for the selected class instead of only a label\n- the issue gives Vigilante enough direction to implement without guessing the basics\n- the target repository is known before attempting issue creation\n- the final response includes the created issue URL or number when creation succeeds\n- the final response says whether the native sub-issue relationship was created or whether issue creation fell back to body-only linking\n- the fallback response states briefly why issue creation was not completed when it fails","tags":["vigilante","create","issue","aliengiraffe","agent","agent-skills","agentic-ai","agentic-workflow","agents","ai-orchestration","ai-orchestrator","orchestration"],"capabilities":["skill","source-aliengiraffe","skill-vigilante-create-issue","topic-agent","topic-agent-skills","topic-agentic-ai","topic-agentic-workflow","topic-agents","topic-ai-orchestration","topic-ai-orchestrator","topic-orchestration"],"categories":["vigilante"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/aliengiraffe/vigilante/vigilante-create-issue","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add aliengiraffe/vigilante","source_repo":"https://github.com/aliengiraffe/vigilante","install_from":"skills.sh"}},"qualityScore":"0.464","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 28 github stars · SKILL.md body (11,382 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-01T07:01:23.459Z","embedding":null,"createdAt":"2026-04-18T22:23:08.721Z","updatedAt":"2026-05-01T07:01:23.459Z","lastSeenAt":"2026-05-01T07:01:23.459Z","tsv":"'/issues':520,638 '/sub_issues':642 '1':205,1083 '2':237,1097 '3':313,1124 '4':368,1139 '5':415,1162 '6':451,1180 '7':480,1208 '8':741 'accept':156,459,1163,1344,1406,1560 'access':766,774,863 'actual':216 'ad':466 'affect':228,1116,1256 'agent':68,377 'alreadi':1122,1307 'altern':448 'alway':897 'ambigu':279,431,664,1007,1528 'api':405,516,632 'append':310 'applic':1226 'approach':1142 'architectur':1278 'around':372 'ask':193,218,498,873,1312 'aspir':395 'assumpt':1118 'attach':617,1514 'attempt':1608 'audienc':389 'auth':762 'author':8 'avail':181,738,1435 'back':84,355,743,849,1642 'backward':1222 'base':259,613 'basic':1601 'behavior':58,141,232,392,1034,1036,1113,1171,1241,1427,1429 'behavior-focus':1170 'best':251 'block':203,749,768 'bodi':93,245,306,364,543,695,711,737,852,938,975,1023,1376,1543,1572,1645 'body-on':851,1644 'boundari':414,1054,1441 'brainstorm':388 'briefli':287,352,777,1652 'broad':387 'bug':116,256,560,561,903,1030,1382,1424,1485 'call':442 'cannot':346,753 'captur':416 'carri':603 'chang':213,1324,1332,1361 'check':1173,1459 'child':593,1511 'clarifi':206 'class':1584 'classif':261,550,918,998 'classifi':112,238,898 'clean':744 'clear':158,1011,1526 'cli':403,1190 'clue':1039,1433 'code':67 'command':1299 'compat':407,1217,1223,1416 'complet':453,755,1070,1658 'compon':1301 'concern':1224 'concret':155,1064,1245,1455 'condit':1071 'confid':349 'config':406,1216 'consider':1212,1412 'constrain':422 'constraint':60,152,398,1068,1120,1250,1335,1453 'content':715 'context':137,225,324,758,1067,1098,1104,1269,1392,1452,1478 'convert':455 'correct':1179 'cover':1078 'coverag':163,1207 'creat':3,22,73,164,481,508,525,616,647,651,691,728,884,911,981,1461,1499,1533,1616,1636 'creation':79,179,201,610,680,747,752,805,837,1610,1622,1640,1655 'criteria':63,157,460,1164,1407,1457,1561 'critic':1200 'current':1033,1112,1326,1426 'decid':246,298 'decis':1281 'default':45,168,486 'deliver':1065,1450 'design':99 'desir':269,1048,1091,1125,1391,1399,1439,1555 'detail':59,274,300,435,1151,1262,1398,1578 'direct':1595 'doc':1218,1413 'done':1356,1456 'draft':121,187,196,501,582,721,876,979,1076,1320,1468,1548 'draft-on':195,500,1547 'draft/fallback':1022 'end':1193,1195 'end-to-end':1192 'enough':57,674,1594 'environ':857 'escal':860 'etc':1419 'eventu':1292 'everi':1074 'exact':1298,1322 'exampl':1013 'execut':19,70,373,1284 'exist':601 'expect':140,409,456,1035,1182,1240,1409,1428,1569 'explicit':138,192,337,497,551,583,660,702,814,872,999,1135,1166,1443,1506,1551 'extra':1476 'f':643 'face':1051 'factual':893 'fail':681,833,1661 'failur':474,888,1203 'fall':83,354,742 'fallback':701,813,993,1467,1552,1649 'featur':115,255,558,559,902,1044,1381,1436,1484 'fell':848,1641 'field':545,795,925 'file':91,362,784,1300 'final':123,242,319,529,705,724,817,907,1458,1612,1625 'first':325 'flag':404,1267 'flexibl':149,441,1155 'flow':838 'focus':1172 'follow':591,1508 'follow-up':590,1507 'frame':369 'full':101 'generic':1175 'gh':177,506,515,523,631,761 'git':323 'github':14,37,77,108,166,483,535,553,567,622,773,915,920,1490,1517 'github/network':862 'give':867,1592 'goal':46,95,145,1058,1289,1446 'ground':132 'guess':234,367,1599 'guidanc':418,896 'happen':1327 'hard':151 'headless':66 'help':5 'hide':1248 'honor':878 'human':7,30 'id':646,649 'identifi':211,1527 'impact':1037,1430 'implement':12,43,148,229,273,380,417,434,1107,1132,1141,1160,1257,1293,1338,1401,1597 'implementation-readi':11 'incident':665 'includ':423,726,967,1213,1286,1297,1425,1437,1448,1573,1614 'infer':280,292,955,1004,1017,1384 'insid':331,1251 'instead':365,716,787,1270,1328,1585 'integr':1189 'intern':549 'invent':1260 'issu':4,15,23,38,55,75,92,109,178,200,244,305,363,371,382,484,507,512,524,530,538,556,568,587,597,602,606,609,614,625,640,645,648,667,679,692,714,729,732,746,751,786,797,804,824,836,842,886,894,909,913,923,937,948,957,964,969,974,983,987,1014,1031,1045,1061,1075,1227,1275,1318,1354,1375,1379,1463,1481,1491,1497,1520,1524,1529,1538,1591,1609,1617,1633,1639,1654 'issue-bodi':936 'issue-numb':666 'keep':689,735,839,887 'key':471,1249 'know':1352 'known':444,491,1123,1308,1606 'label':312,934,1589 'later':42,383 'layer':1186 'leav':1232 'like':283,424,1177 'limit':411 'line':971,1026,1540 'link':958,1536,1647 'local':322 'log':1214,1414 'low':663 'low-ambigu':662 'make':452,699,811 'manual':1197 'map':546,658 'mark':432 'markdown':186,710,785 'materi':429,1255 'matter':131,1095,1187,1282,1580 'md':1377 'mention':469,669,1199 'messag':889 'method':633 'migrat':1215,1415 'miss':220,760,1089,1268,1389 'mode':475,1204 'must':400,477,1336,1365 'name':1567 'narrow':1295 'nativ':537,555,566,621,653,676,793,808,821,922,947,986,1489,1516,1534,1630 'need':994,1028,1108,1206,1333 'network':765 'new':586,841 'non':144,1057,1288,1445 'non-goal':143,1056,1287,1444 'note':396,1009,1402 'number':607,641,668,733,1620 'observ':391,1219,1418,1558 'open':510,527 'oper':1066,1209,1410,1451 'option':1342 'oral':1477 'otherwis':334 'outcom':105,270,1052,1126,1400,1440,1556 'output':198,320,503,1368,1553 'over-constrain':420 'overal':835 'overload':1273 'overview':24 'owner':518,636 'parent':605,628,639,657,1523 'parent/child':956,1535 'pass/fail':458 'path':426,1149 'perform':413 'plausibl':1147 'polish':185,709 'possibl':82,1140 'post':634 'prefer':236,321,390,513,1169 'preserv':402,693,996 'prevent':479,772,1367 'primari':942 'priorit':1032,1046,1062 'problem':127,267,1084,1385,1472 'produc':106 'product':136,222,1101,1395 'prose':671,1252 'prove':1359 'provid':338,1266 'qualiti':1228 'question':1310 'rather':271 'readi':13,89,360,782 'ready-to-fil':88,359,781 'realist':146 'recommend':1309 'reduc':430 'refer':697,965,1530 'refin':35 'regress':162,472,1041,1201,1364 'reject':447,791,828 'relationship':654,825,847,1512,1634 'relev':450,1082,1393,1405 'reliabl':20 'remind':1423 'repo':517,519,635,637,1394 'report':844 'repositori':134,172,221,317,333,339,345,489,577,684,757,790,928,1100,1261,1502,1604 'represent':944 'reproduct':1038,1432 'request':52,208,240,249,277,542,826,859,880,900,1008 'requir':231,302,437,1072,1153 'reserv':1545 'resolv':175,314,348 'respect':1339 'respons':706,725,818,1613,1626,1650 'restrict':771 'retri':803 'return':86,182,357,779,977,1465 'risk':1042 'rollout':410,1220,1417 'rule':1229 'safe':71 'sandbox':770 'say':350,584,775,1627 'scope':1053,1138 'section':1073,1080,1566 'select':295,1480,1583 'separ':230 'set':534,951 'short':890 'skill':27 'skill-vigilante-create-issue' 'slug':340 'solut':102,425,1148,1341 'sourc':572 'source-aliengiraffe' 'specif':124,600,891,1422,1577 'specul':1277 'state':266,286,461,1183,1244,1651 'statement':1085,1168,1236 'stay':1294 'stop':718 'structur':1372 'sub':596,624,644,678,823,1519,1632 'sub-issu':595,623,677,822,1518,1631 'succeed':1623 'success':952 'summari':1378 'support':578,687,858,929,1234,1504 'target':171,316,1603 'task':118,258,562,563,905,1016,1060,1383,1447,1487 'templat':1369 'test':463,1181,1185,1358,1408,1565 'testabl':153,454,1167,1563 'text':696,854,939 'tighten':1316 'topic-agent' 'topic-agent-skills' 'topic-agentic-ai' 'topic-agentic-workflow' 'topic-agents' 'topic-ai-orchestration' 'topic-ai-orchestrator' 'topic-orchestration' 'tradeoff':445,1157,1403 'treat':252,564 'true':1130 'truth':574 'turn':49 'type':284,290,296,539,544,557,569,794,798,809,895,924,943,949,970,988,1002,1015,1380,1421,1482,1492,1539,1576 'type-specif':1420,1575 'unavail':764,800,990 'undefin':1237 'understand':1161,1474 'unit':1188 'unless':1279 'unrel':963 'unsupport':802,830 'updat':468 'url':342,730,1618 'use':25,293,335,504,707,740,933,1165,1313,1370,1494 'user':191,215,224,264,328,494,871,1050 'user-fac':1049 'ux':408,1211,1411 'vagu':51,394,960 'valid':160,1570 'verif':62,1198 'verifi':1469 'versus':1154 'vigilant':2,17,21,40,505,514,522,532,547,630,1593 'vigilante-create-issu':1 'want':31,217 'whenev':575,926 'whether':247,1628,1638 'without':419,806,980,1475,1598 'word':961,1176 'work':330,1178,1362 'workflow':204,1103,1191,1303,1397 'write':9,33,210,374,916 'wrong':1088,1388 'x':1235","prices":[{"id":"2c3a7f2d-c8dc-4e89-bab0-2a25a861213d","listingId":"91fdb4b0-4240-4c55-ae8e-787d5caf58cd","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"aliengiraffe","category":"vigilante","install_from":"skills.sh"},"createdAt":"2026-04-18T22:23:08.721Z"}],"sources":[{"listingId":"91fdb4b0-4240-4c55-ae8e-787d5caf58cd","source":"github","sourceId":"aliengiraffe/vigilante/vigilante-create-issue","sourceUrl":"https://github.com/aliengiraffe/vigilante/tree/main/skills/vigilante-create-issue","isPrimary":false,"firstSeenAt":"2026-04-18T22:23:08.721Z","lastSeenAt":"2026-05-01T07:01:23.459Z"}],"details":{"listingId":"91fdb4b0-4240-4c55-ae8e-787d5caf58cd","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"aliengiraffe","slug":"vigilante-create-issue","github":{"repo":"aliengiraffe/vigilante","stars":28,"topics":["agent","agent-skills","agentic-ai","agentic-workflow","agents","ai","ai-orchestration","ai-orchestrator","orchestration"],"license":"apache-2.0","html_url":"https://github.com/aliengiraffe/vigilante","pushed_at":"2026-04-23T16:58:46Z","description":"Vigilante is a sandbox-first orchestration layer for coding agents. It isolates every task in a git worktree, enforces strict credential scoping, and gives you full audit logs — so your agents can't burn down production.","skill_md_sha":"b0cf1985ae11e7d0c65499b727c239a1c54867ea","skill_md_path":"skills/vigilante-create-issue/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/aliengiraffe/vigilante/tree/main/skills/vigilante-create-issue"},"layout":"multi","source":"github","category":"vigilante","frontmatter":{"name":"vigilante-create-issue","description":"Help a human author write an implementation-ready GitHub issue that Vigilante can execute reliably."},"skills_sh_url":"https://skills.sh/aliengiraffe/vigilante/vigilante-create-issue"},"updatedAt":"2026-05-01T07:01:23.459Z"}}