[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-github-console-rendering":3,"mdc--ml4fxn-key":31,"related-org-github-console-rendering":809,"related-repo-github-console-rendering":990},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"console-rendering","use Go console rendering system","Instructions for using the struct tag-based console rendering system in Go",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"github","GitHub","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fgithub.png",[12,14,17],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"CLI","cli",{"name":18,"slug":19,"type":13},"Go","go",8,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw-threat-detection","2026-05-07T05:48:46.51738",null,3,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"GitHub Agentic Workflows Threat Detection","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw-threat-detection\u002Ftree\u002FHEAD\u002Fskills\u002Fconsole-rendering","---\nname: console-rendering\ndescription: Instructions for using the struct tag-based console rendering system in Go\n---\n\n# Console Rendering System Usage\n\nThis skill provides instructions for using the struct tag-based console rendering system.\n\n## Struct Tag Support\n\nUse the `console` struct tag to control rendering behavior:\n\n- **`header:\"Name\"`** - Sets the display name for fields (used in both structs and tables)\n- **`title:\"Section Title\"`** - Sets the title for nested structs, slices, or maps\n- **`format:\"type\"`** - Sets the formatting type for the field value\n  - `format:number` - Formats integers as human-readable numbers (e.g., \"1k\", \"1.2M\")\n  - `format:cost` - Formats floats as currency with $ prefix (e.g., \"$1.234\")\n- **`omitempty`** - Skips the field if it has a zero value\n- **`\"-\"`** - Always skips the field\n\n## Example Usage\n\n```go\ntype Overview struct {\n    RunID    int64  `console:\"header:Run ID\"`\n    Workflow string `console:\"header:Workflow\"`\n    Status   string `console:\"header:Status\"`\n    Duration string `console:\"header:Duration,omitempty\"`\n}\n\ndata := Overview{\n    RunID:    12345,\n    Workflow: \"test-workflow\",\n    Status:   \"completed\",\n    Duration: \"5m30s\",\n}\n\n\u002F\u002F Simple rendering\nfmt.Print(console.RenderStruct(data))\n\n\u002F\u002F Output:\n\u002F\u002F   Run ID  : 12345\n\u002F\u002F   Workflow: test-workflow\n\u002F\u002F   Status  : completed\n\u002F\u002F   Duration: 5m30s\n```\n\n## Format Tag Examples\n\n### Number Formatting\n\n```go\ntype Metrics struct {\n    TokenUsage int `console:\"header:Token Usage,format:number\"`\n    Errors     int `console:\"header:Errors\"`\n}\n\ndata := Metrics{\n    TokenUsage: 250000,\n    Errors:     5,\n}\n\n\u002F\u002F Renders as:\n\u002F\u002F   Token Usage: 250k\n\u002F\u002F   Errors     : 5\n```\n\n### Cost Formatting\n\n```go\ntype Billing struct {\n    Cost float64 `console:\"header:Estimated Cost,format:cost\"`\n}\n\ndata := Billing{\n    Cost: 1.234,\n}\n\n\u002F\u002F Renders as:\n\u002F\u002F   Estimated Cost: $1.234\n```\n\n## Rendering Behavior\n\n### Structs\nStructs are rendered as key-value pairs with proper alignment.\n\n### Slices\nSlices of structs are automatically rendered as tables:\n\n```go\ntype Job struct {\n    Name       string `console:\"header:Name\"`\n    Status     string `console:\"header:Status\"`\n    Conclusion string `console:\"header:Conclusion,omitempty\"`\n}\n\njobs := []Job{\n    {Name: \"build\", Status: \"completed\", Conclusion: \"success\"},\n    {Name: \"test\", Status: \"in_progress\", Conclusion: \"\"},\n}\n\nfmt.Print(console.RenderStruct(jobs))\n```\n\nRenders as:\n\n```\nName  | Status      | Conclusion\n----- | ----------- | ----------\nbuild | completed   | success\ntest  | in_progress | -\n```\n\n### Maps\nMaps are rendered as markdown-style headers with key-value pairs.\n\n### Special Type Handling\n\n#### time.Time\n`time.Time` fields are automatically formatted as `\"2006-01-02 15:04:05\"`. Zero time values are considered empty when used with `omitempty`.\n\n#### Unexported Fields\nThe rendering system safely handles unexported struct fields by checking `CanInterface()` before attempting to access field values.\n",{"data":32,"body":33},{"name":4,"description":6},{"type":34,"children":35},"root",[36,45,51,58,72,173,179,385,391,398,505,511,593,599,605,610,616,621,720,725,735,741,746,752,759,784,790,803],{"type":37,"tag":38,"props":39,"children":41},"element","h1",{"id":40},"console-rendering-system-usage",[42],{"type":43,"value":44},"text","Console Rendering System Usage",{"type":37,"tag":46,"props":47,"children":48},"p",{},[49],{"type":43,"value":50},"This skill provides instructions for using the struct tag-based console rendering system.",{"type":37,"tag":52,"props":53,"children":55},"h2",{"id":54},"struct-tag-support",[56],{"type":43,"value":57},"Struct Tag Support",{"type":37,"tag":46,"props":59,"children":60},{},[61,63,70],{"type":43,"value":62},"Use the ",{"type":37,"tag":64,"props":65,"children":67},"code",{"className":66},[],[68],{"type":43,"value":69},"console",{"type":43,"value":71}," struct tag to control rendering behavior:",{"type":37,"tag":73,"props":74,"children":75},"ul",{},[76,92,106,145,159],{"type":37,"tag":77,"props":78,"children":79},"li",{},[80,90],{"type":37,"tag":81,"props":82,"children":83},"strong",{},[84],{"type":37,"tag":64,"props":85,"children":87},{"className":86},[],[88],{"type":43,"value":89},"header:\"Name\"",{"type":43,"value":91}," - Sets the display name for fields (used in both structs and tables)",{"type":37,"tag":77,"props":93,"children":94},{},[95,104],{"type":37,"tag":81,"props":96,"children":97},{},[98],{"type":37,"tag":64,"props":99,"children":101},{"className":100},[],[102],{"type":43,"value":103},"title:\"Section Title\"",{"type":43,"value":105}," - Sets the title for nested structs, slices, or maps",{"type":37,"tag":77,"props":107,"children":108},{},[109,118,120],{"type":37,"tag":81,"props":110,"children":111},{},[112],{"type":37,"tag":64,"props":113,"children":115},{"className":114},[],[116],{"type":43,"value":117},"format:\"type\"",{"type":43,"value":119}," - Sets the formatting type for the field value\n",{"type":37,"tag":73,"props":121,"children":122},{},[123,134],{"type":37,"tag":77,"props":124,"children":125},{},[126,132],{"type":37,"tag":64,"props":127,"children":129},{"className":128},[],[130],{"type":43,"value":131},"format:number",{"type":43,"value":133}," - Formats integers as human-readable numbers (e.g., \"1k\", \"1.2M\")",{"type":37,"tag":77,"props":135,"children":136},{},[137,143],{"type":37,"tag":64,"props":138,"children":140},{"className":139},[],[141],{"type":43,"value":142},"format:cost",{"type":43,"value":144}," - Formats floats as currency with $ prefix (e.g., \"$1.234\")",{"type":37,"tag":77,"props":146,"children":147},{},[148,157],{"type":37,"tag":81,"props":149,"children":150},{},[151],{"type":37,"tag":64,"props":152,"children":154},{"className":153},[],[155],{"type":43,"value":156},"omitempty",{"type":43,"value":158}," - Skips the field if it has a zero value",{"type":37,"tag":77,"props":160,"children":161},{},[162,171],{"type":37,"tag":81,"props":163,"children":164},{},[165],{"type":37,"tag":64,"props":166,"children":168},{"className":167},[],[169],{"type":43,"value":170},"\"-\"",{"type":43,"value":172}," - Always skips the field",{"type":37,"tag":52,"props":174,"children":176},{"id":175},"example-usage",[177],{"type":43,"value":178},"Example Usage",{"type":37,"tag":180,"props":181,"children":185},"pre",{"className":182,"code":183,"language":19,"meta":184,"style":184},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","type Overview struct {\n    RunID    int64  `console:\"header:Run ID\"`\n    Workflow string `console:\"header:Workflow\"`\n    Status   string `console:\"header:Status\"`\n    Duration string `console:\"header:Duration,omitempty\"`\n}\n\ndata := Overview{\n    RunID:    12345,\n    Workflow: \"test-workflow\",\n    Status:   \"completed\",\n    Duration: \"5m30s\",\n}\n\n\u002F\u002F Simple rendering\nfmt.Print(console.RenderStruct(data))\n\n\u002F\u002F Output:\n\u002F\u002F   Run ID  : 12345\n\u002F\u002F   Workflow: test-workflow\n\u002F\u002F   Status  : completed\n\u002F\u002F   Duration: 5m30s\n","",[186],{"type":37,"tag":64,"props":187,"children":188},{"__ignoreMap":184},[189,200,209,217,226,235,244,254,262,271,280,289,298,306,314,323,332,340,349,358,367,376],{"type":37,"tag":190,"props":191,"children":194},"span",{"class":192,"line":193},"line",1,[195],{"type":37,"tag":190,"props":196,"children":197},{},[198],{"type":43,"value":199},"type Overview struct {\n",{"type":37,"tag":190,"props":201,"children":203},{"class":192,"line":202},2,[204],{"type":37,"tag":190,"props":205,"children":206},{},[207],{"type":43,"value":208},"    RunID    int64  `console:\"header:Run ID\"`\n",{"type":37,"tag":190,"props":210,"children":211},{"class":192,"line":24},[212],{"type":37,"tag":190,"props":213,"children":214},{},[215],{"type":43,"value":216},"    Workflow string `console:\"header:Workflow\"`\n",{"type":37,"tag":190,"props":218,"children":220},{"class":192,"line":219},4,[221],{"type":37,"tag":190,"props":222,"children":223},{},[224],{"type":43,"value":225},"    Status   string `console:\"header:Status\"`\n",{"type":37,"tag":190,"props":227,"children":229},{"class":192,"line":228},5,[230],{"type":37,"tag":190,"props":231,"children":232},{},[233],{"type":43,"value":234},"    Duration string `console:\"header:Duration,omitempty\"`\n",{"type":37,"tag":190,"props":236,"children":238},{"class":192,"line":237},6,[239],{"type":37,"tag":190,"props":240,"children":241},{},[242],{"type":43,"value":243},"}\n",{"type":37,"tag":190,"props":245,"children":247},{"class":192,"line":246},7,[248],{"type":37,"tag":190,"props":249,"children":251},{"emptyLinePlaceholder":250},true,[252],{"type":43,"value":253},"\n",{"type":37,"tag":190,"props":255,"children":256},{"class":192,"line":20},[257],{"type":37,"tag":190,"props":258,"children":259},{},[260],{"type":43,"value":261},"data := Overview{\n",{"type":37,"tag":190,"props":263,"children":265},{"class":192,"line":264},9,[266],{"type":37,"tag":190,"props":267,"children":268},{},[269],{"type":43,"value":270},"    RunID:    12345,\n",{"type":37,"tag":190,"props":272,"children":274},{"class":192,"line":273},10,[275],{"type":37,"tag":190,"props":276,"children":277},{},[278],{"type":43,"value":279},"    Workflow: \"test-workflow\",\n",{"type":37,"tag":190,"props":281,"children":283},{"class":192,"line":282},11,[284],{"type":37,"tag":190,"props":285,"children":286},{},[287],{"type":43,"value":288},"    Status:   \"completed\",\n",{"type":37,"tag":190,"props":290,"children":292},{"class":192,"line":291},12,[293],{"type":37,"tag":190,"props":294,"children":295},{},[296],{"type":43,"value":297},"    Duration: \"5m30s\",\n",{"type":37,"tag":190,"props":299,"children":301},{"class":192,"line":300},13,[302],{"type":37,"tag":190,"props":303,"children":304},{},[305],{"type":43,"value":243},{"type":37,"tag":190,"props":307,"children":309},{"class":192,"line":308},14,[310],{"type":37,"tag":190,"props":311,"children":312},{"emptyLinePlaceholder":250},[313],{"type":43,"value":253},{"type":37,"tag":190,"props":315,"children":317},{"class":192,"line":316},15,[318],{"type":37,"tag":190,"props":319,"children":320},{},[321],{"type":43,"value":322},"\u002F\u002F Simple rendering\n",{"type":37,"tag":190,"props":324,"children":326},{"class":192,"line":325},16,[327],{"type":37,"tag":190,"props":328,"children":329},{},[330],{"type":43,"value":331},"fmt.Print(console.RenderStruct(data))\n",{"type":37,"tag":190,"props":333,"children":335},{"class":192,"line":334},17,[336],{"type":37,"tag":190,"props":337,"children":338},{"emptyLinePlaceholder":250},[339],{"type":43,"value":253},{"type":37,"tag":190,"props":341,"children":343},{"class":192,"line":342},18,[344],{"type":37,"tag":190,"props":345,"children":346},{},[347],{"type":43,"value":348},"\u002F\u002F Output:\n",{"type":37,"tag":190,"props":350,"children":352},{"class":192,"line":351},19,[353],{"type":37,"tag":190,"props":354,"children":355},{},[356],{"type":43,"value":357},"\u002F\u002F   Run ID  : 12345\n",{"type":37,"tag":190,"props":359,"children":361},{"class":192,"line":360},20,[362],{"type":37,"tag":190,"props":363,"children":364},{},[365],{"type":43,"value":366},"\u002F\u002F   Workflow: test-workflow\n",{"type":37,"tag":190,"props":368,"children":370},{"class":192,"line":369},21,[371],{"type":37,"tag":190,"props":372,"children":373},{},[374],{"type":43,"value":375},"\u002F\u002F   Status  : completed\n",{"type":37,"tag":190,"props":377,"children":379},{"class":192,"line":378},22,[380],{"type":37,"tag":190,"props":381,"children":382},{},[383],{"type":43,"value":384},"\u002F\u002F   Duration: 5m30s\n",{"type":37,"tag":52,"props":386,"children":388},{"id":387},"format-tag-examples",[389],{"type":43,"value":390},"Format Tag Examples",{"type":37,"tag":392,"props":393,"children":395},"h3",{"id":394},"number-formatting",[396],{"type":43,"value":397},"Number Formatting",{"type":37,"tag":180,"props":399,"children":401},{"className":182,"code":400,"language":19,"meta":184,"style":184},"type Metrics struct {\n    TokenUsage int `console:\"header:Token Usage,format:number\"`\n    Errors     int `console:\"header:Errors\"`\n}\n\ndata := Metrics{\n    TokenUsage: 250000,\n    Errors:     5,\n}\n\n\u002F\u002F Renders as:\n\u002F\u002F   Token Usage: 250k\n\u002F\u002F   Errors     : 5\n",[402],{"type":37,"tag":64,"props":403,"children":404},{"__ignoreMap":184},[405,413,421,429,436,443,451,459,467,474,481,489,497],{"type":37,"tag":190,"props":406,"children":407},{"class":192,"line":193},[408],{"type":37,"tag":190,"props":409,"children":410},{},[411],{"type":43,"value":412},"type Metrics struct {\n",{"type":37,"tag":190,"props":414,"children":415},{"class":192,"line":202},[416],{"type":37,"tag":190,"props":417,"children":418},{},[419],{"type":43,"value":420},"    TokenUsage int `console:\"header:Token Usage,format:number\"`\n",{"type":37,"tag":190,"props":422,"children":423},{"class":192,"line":24},[424],{"type":37,"tag":190,"props":425,"children":426},{},[427],{"type":43,"value":428},"    Errors     int `console:\"header:Errors\"`\n",{"type":37,"tag":190,"props":430,"children":431},{"class":192,"line":219},[432],{"type":37,"tag":190,"props":433,"children":434},{},[435],{"type":43,"value":243},{"type":37,"tag":190,"props":437,"children":438},{"class":192,"line":228},[439],{"type":37,"tag":190,"props":440,"children":441},{"emptyLinePlaceholder":250},[442],{"type":43,"value":253},{"type":37,"tag":190,"props":444,"children":445},{"class":192,"line":237},[446],{"type":37,"tag":190,"props":447,"children":448},{},[449],{"type":43,"value":450},"data := Metrics{\n",{"type":37,"tag":190,"props":452,"children":453},{"class":192,"line":246},[454],{"type":37,"tag":190,"props":455,"children":456},{},[457],{"type":43,"value":458},"    TokenUsage: 250000,\n",{"type":37,"tag":190,"props":460,"children":461},{"class":192,"line":20},[462],{"type":37,"tag":190,"props":463,"children":464},{},[465],{"type":43,"value":466},"    Errors:     5,\n",{"type":37,"tag":190,"props":468,"children":469},{"class":192,"line":264},[470],{"type":37,"tag":190,"props":471,"children":472},{},[473],{"type":43,"value":243},{"type":37,"tag":190,"props":475,"children":476},{"class":192,"line":273},[477],{"type":37,"tag":190,"props":478,"children":479},{"emptyLinePlaceholder":250},[480],{"type":43,"value":253},{"type":37,"tag":190,"props":482,"children":483},{"class":192,"line":282},[484],{"type":37,"tag":190,"props":485,"children":486},{},[487],{"type":43,"value":488},"\u002F\u002F Renders as:\n",{"type":37,"tag":190,"props":490,"children":491},{"class":192,"line":291},[492],{"type":37,"tag":190,"props":493,"children":494},{},[495],{"type":43,"value":496},"\u002F\u002F   Token Usage: 250k\n",{"type":37,"tag":190,"props":498,"children":499},{"class":192,"line":300},[500],{"type":37,"tag":190,"props":501,"children":502},{},[503],{"type":43,"value":504},"\u002F\u002F   Errors     : 5\n",{"type":37,"tag":392,"props":506,"children":508},{"id":507},"cost-formatting",[509],{"type":43,"value":510},"Cost Formatting",{"type":37,"tag":180,"props":512,"children":514},{"className":182,"code":513,"language":19,"meta":184,"style":184},"type Billing struct {\n    Cost float64 `console:\"header:Estimated Cost,format:cost\"`\n}\n\ndata := Billing{\n    Cost: 1.234,\n}\n\n\u002F\u002F Renders as:\n\u002F\u002F   Estimated Cost: $1.234\n",[515],{"type":37,"tag":64,"props":516,"children":517},{"__ignoreMap":184},[518,526,534,541,548,556,564,571,578,585],{"type":37,"tag":190,"props":519,"children":520},{"class":192,"line":193},[521],{"type":37,"tag":190,"props":522,"children":523},{},[524],{"type":43,"value":525},"type Billing struct {\n",{"type":37,"tag":190,"props":527,"children":528},{"class":192,"line":202},[529],{"type":37,"tag":190,"props":530,"children":531},{},[532],{"type":43,"value":533},"    Cost float64 `console:\"header:Estimated Cost,format:cost\"`\n",{"type":37,"tag":190,"props":535,"children":536},{"class":192,"line":24},[537],{"type":37,"tag":190,"props":538,"children":539},{},[540],{"type":43,"value":243},{"type":37,"tag":190,"props":542,"children":543},{"class":192,"line":219},[544],{"type":37,"tag":190,"props":545,"children":546},{"emptyLinePlaceholder":250},[547],{"type":43,"value":253},{"type":37,"tag":190,"props":549,"children":550},{"class":192,"line":228},[551],{"type":37,"tag":190,"props":552,"children":553},{},[554],{"type":43,"value":555},"data := Billing{\n",{"type":37,"tag":190,"props":557,"children":558},{"class":192,"line":237},[559],{"type":37,"tag":190,"props":560,"children":561},{},[562],{"type":43,"value":563},"    Cost: 1.234,\n",{"type":37,"tag":190,"props":565,"children":566},{"class":192,"line":246},[567],{"type":37,"tag":190,"props":568,"children":569},{},[570],{"type":43,"value":243},{"type":37,"tag":190,"props":572,"children":573},{"class":192,"line":20},[574],{"type":37,"tag":190,"props":575,"children":576},{"emptyLinePlaceholder":250},[577],{"type":43,"value":253},{"type":37,"tag":190,"props":579,"children":580},{"class":192,"line":264},[581],{"type":37,"tag":190,"props":582,"children":583},{},[584],{"type":43,"value":488},{"type":37,"tag":190,"props":586,"children":587},{"class":192,"line":273},[588],{"type":37,"tag":190,"props":589,"children":590},{},[591],{"type":43,"value":592},"\u002F\u002F   Estimated Cost: $1.234\n",{"type":37,"tag":52,"props":594,"children":596},{"id":595},"rendering-behavior",[597],{"type":43,"value":598},"Rendering Behavior",{"type":37,"tag":392,"props":600,"children":602},{"id":601},"structs",[603],{"type":43,"value":604},"Structs",{"type":37,"tag":46,"props":606,"children":607},{},[608],{"type":43,"value":609},"Structs are rendered as key-value pairs with proper alignment.",{"type":37,"tag":392,"props":611,"children":613},{"id":612},"slices",[614],{"type":43,"value":615},"Slices",{"type":37,"tag":46,"props":617,"children":618},{},[619],{"type":43,"value":620},"Slices of structs are automatically rendered as tables:",{"type":37,"tag":180,"props":622,"children":624},{"className":182,"code":623,"language":19,"meta":184,"style":184},"type Job struct {\n    Name       string `console:\"header:Name\"`\n    Status     string `console:\"header:Status\"`\n    Conclusion string `console:\"header:Conclusion,omitempty\"`\n}\n\njobs := []Job{\n    {Name: \"build\", Status: \"completed\", Conclusion: \"success\"},\n    {Name: \"test\", Status: \"in_progress\", Conclusion: \"\"},\n}\n\nfmt.Print(console.RenderStruct(jobs))\n",[625],{"type":37,"tag":64,"props":626,"children":627},{"__ignoreMap":184},[628,636,644,652,660,667,674,682,690,698,705,712],{"type":37,"tag":190,"props":629,"children":630},{"class":192,"line":193},[631],{"type":37,"tag":190,"props":632,"children":633},{},[634],{"type":43,"value":635},"type Job struct {\n",{"type":37,"tag":190,"props":637,"children":638},{"class":192,"line":202},[639],{"type":37,"tag":190,"props":640,"children":641},{},[642],{"type":43,"value":643},"    Name       string `console:\"header:Name\"`\n",{"type":37,"tag":190,"props":645,"children":646},{"class":192,"line":24},[647],{"type":37,"tag":190,"props":648,"children":649},{},[650],{"type":43,"value":651},"    Status     string `console:\"header:Status\"`\n",{"type":37,"tag":190,"props":653,"children":654},{"class":192,"line":219},[655],{"type":37,"tag":190,"props":656,"children":657},{},[658],{"type":43,"value":659},"    Conclusion string `console:\"header:Conclusion,omitempty\"`\n",{"type":37,"tag":190,"props":661,"children":662},{"class":192,"line":228},[663],{"type":37,"tag":190,"props":664,"children":665},{},[666],{"type":43,"value":243},{"type":37,"tag":190,"props":668,"children":669},{"class":192,"line":237},[670],{"type":37,"tag":190,"props":671,"children":672},{"emptyLinePlaceholder":250},[673],{"type":43,"value":253},{"type":37,"tag":190,"props":675,"children":676},{"class":192,"line":246},[677],{"type":37,"tag":190,"props":678,"children":679},{},[680],{"type":43,"value":681},"jobs := []Job{\n",{"type":37,"tag":190,"props":683,"children":684},{"class":192,"line":20},[685],{"type":37,"tag":190,"props":686,"children":687},{},[688],{"type":43,"value":689},"    {Name: \"build\", Status: \"completed\", Conclusion: \"success\"},\n",{"type":37,"tag":190,"props":691,"children":692},{"class":192,"line":264},[693],{"type":37,"tag":190,"props":694,"children":695},{},[696],{"type":43,"value":697},"    {Name: \"test\", Status: \"in_progress\", Conclusion: \"\"},\n",{"type":37,"tag":190,"props":699,"children":700},{"class":192,"line":273},[701],{"type":37,"tag":190,"props":702,"children":703},{},[704],{"type":43,"value":243},{"type":37,"tag":190,"props":706,"children":707},{"class":192,"line":282},[708],{"type":37,"tag":190,"props":709,"children":710},{"emptyLinePlaceholder":250},[711],{"type":43,"value":253},{"type":37,"tag":190,"props":713,"children":714},{"class":192,"line":291},[715],{"type":37,"tag":190,"props":716,"children":717},{},[718],{"type":43,"value":719},"fmt.Print(console.RenderStruct(jobs))\n",{"type":37,"tag":46,"props":721,"children":722},{},[723],{"type":43,"value":724},"Renders as:",{"type":37,"tag":180,"props":726,"children":730},{"className":727,"code":729,"language":43},[728],"language-text","Name  | Status      | Conclusion\n----- | ----------- | ----------\nbuild | completed   | success\ntest  | in_progress | -\n",[731],{"type":37,"tag":64,"props":732,"children":733},{"__ignoreMap":184},[734],{"type":43,"value":729},{"type":37,"tag":392,"props":736,"children":738},{"id":737},"maps",[739],{"type":43,"value":740},"Maps",{"type":37,"tag":46,"props":742,"children":743},{},[744],{"type":43,"value":745},"Maps are rendered as markdown-style headers with key-value pairs.",{"type":37,"tag":392,"props":747,"children":749},{"id":748},"special-type-handling",[750],{"type":43,"value":751},"Special Type Handling",{"type":37,"tag":753,"props":754,"children":756},"h4",{"id":755},"timetime",[757],{"type":43,"value":758},"time.Time",{"type":37,"tag":46,"props":760,"children":761},{},[762,767,769,775,777,782],{"type":37,"tag":64,"props":763,"children":765},{"className":764},[],[766],{"type":43,"value":758},{"type":43,"value":768}," fields are automatically formatted as ",{"type":37,"tag":64,"props":770,"children":772},{"className":771},[],[773],{"type":43,"value":774},"\"2006-01-02 15:04:05\"",{"type":43,"value":776},". Zero time values are considered empty when used with ",{"type":37,"tag":64,"props":778,"children":780},{"className":779},[],[781],{"type":43,"value":156},{"type":43,"value":783},".",{"type":37,"tag":753,"props":785,"children":787},{"id":786},"unexported-fields",[788],{"type":43,"value":789},"Unexported Fields",{"type":37,"tag":46,"props":791,"children":792},{},[793,795,801],{"type":43,"value":794},"The rendering system safely handles unexported struct fields by checking ",{"type":37,"tag":64,"props":796,"children":798},{"className":797},[],[799],{"type":43,"value":800},"CanInterface()",{"type":43,"value":802}," before attempting to access field values.",{"type":37,"tag":804,"props":805,"children":806},"style",{},[807],{"type":43,"value":808},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":810,"total":989},[811,835,853,869,883,899,913,925,937,949,965,977],{"slug":812,"name":812,"fn":813,"description":814,"org":815,"tags":816,"stars":832,"repoUrl":833,"updatedAt":834},"qdrant-horizontal-scaling","guide Qdrant horizontal scaling decisions","Diagnoses and guides Qdrant horizontal scaling decisions. Use when someone asks 'vertical or horizontal?', 'how many nodes?', 'how many shards?', 'how to add nodes', 'resharding', 'data doesn't fit', or 'need more capacity'. Also use when data growth outpaces current deployment.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[817,820,823,826,829],{"name":818,"slug":819,"type":13},"AI Infrastructure","ai-infrastructure",{"name":821,"slug":822,"type":13},"Architecture","architecture",{"name":824,"slug":825,"type":13},"Capacity Planning","capacity-planning",{"name":827,"slug":828,"type":13},"Database","database",{"name":830,"slug":831,"type":13},"Qdrant","qdrant",36978,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot","2026-04-18T04:46:16.349561",{"slug":836,"name":836,"fn":837,"description":838,"org":839,"tags":840,"stars":832,"repoUrl":833,"updatedAt":852},"qdrant-indexing-performance-optimization","optimize Qdrant indexing performance","Diagnoses and fixes slow Qdrant indexing and data ingestion. Use when someone reports 'uploads are slow', 'indexing takes forever', 'optimizer is stuck', 'HNSW build time too long', or 'data uploaded but search is bad'. Also use when optimizer status shows errors, segments won't merge, or indexing threshold questions arise.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[841,844,845,848,851],{"name":842,"slug":843,"type":13},"Data Engineering","data-engineering",{"name":827,"slug":828,"type":13},{"name":846,"slug":847,"type":13},"ETL","etl",{"name":849,"slug":850,"type":13},"Performance","performance",{"name":830,"slug":831,"type":13},"2026-04-18T04:46:02.766357",{"slug":854,"name":854,"fn":855,"description":856,"org":857,"tags":858,"stars":832,"repoUrl":833,"updatedAt":868},"qdrant-memory-usage-optimization","optimize Qdrant memory usage","Diagnoses and reduces Qdrant memory usage. Use when someone reports 'memory too high', 'RAM keeps growing', 'node crashed', 'out of memory', 'memory leak', or asks 'why is memory usage so high?', 'how to reduce RAM?'. Also use when memory doesn't match calculations, quantization didn't help, or nodes crash during recovery.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[859,862,863,866,867],{"name":860,"slug":861,"type":13},"Cost Optimization","cost-optimization",{"name":827,"slug":828,"type":13},{"name":864,"slug":865,"type":13},"Observability","observability",{"name":849,"slug":850,"type":13},{"name":830,"slug":831,"type":13},"2026-04-18T04:46:01.525023",{"slug":870,"name":870,"fn":871,"description":872,"org":873,"tags":874,"stars":832,"repoUrl":833,"updatedAt":882},"qdrant-minimize-latency","minimize Qdrant query latency","Guides Qdrant query latency optimization. Use when someone asks 'search is slow', 'how to reduce latency', 'p99 is too high', 'tail latency', 'single query too slow', 'how to make search faster', or 'latency spikes'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[875,876,877,878,879],{"name":821,"slug":822,"type":13},{"name":827,"slug":828,"type":13},{"name":849,"slug":850,"type":13},{"name":830,"slug":831,"type":13},{"name":880,"slug":881,"type":13},"Search","search","2026-04-18T04:46:10.126667",{"slug":884,"name":884,"fn":885,"description":886,"org":887,"tags":888,"stars":832,"repoUrl":833,"updatedAt":898},"qdrant-monitoring-debugging","debug Qdrant production issues with metrics","Diagnoses Qdrant production issues using metrics and observability tools. Use when someone reports 'optimizer stuck', 'indexing too slow', 'memory too high', 'OOM crash', 'queries are slow', 'latency spike', or 'search was fast now it's slow'. Also use when performance degrades without obvious config changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[889,892,895,896,897],{"name":890,"slug":891,"type":13},"Debugging","debugging",{"name":893,"slug":894,"type":13},"Monitoring","monitoring",{"name":864,"slug":865,"type":13},{"name":849,"slug":850,"type":13},{"name":830,"slug":831,"type":13},"2026-04-18T04:46:06.450784",{"slug":900,"name":900,"fn":901,"description":902,"org":903,"tags":904,"stars":832,"repoUrl":833,"updatedAt":912},"qdrant-monitoring-setup","set up Qdrant monitoring and alerting","Guides Qdrant monitoring setup including Prometheus scraping, health probes, Hybrid Cloud metrics, alerting, and log centralization. Use when someone asks 'how to set up monitoring', 'Prometheus config', 'Grafana dashboard', 'health check endpoints', 'how to scrape Hybrid Cloud', 'what alerts to set', 'how to centralize logs', or 'audit logging'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[905,906,907,908,909],{"name":818,"slug":819,"type":13},{"name":893,"slug":894,"type":13},{"name":864,"slug":865,"type":13},{"name":830,"slug":831,"type":13},{"name":910,"slug":911,"type":13},"SRE","sre","2026-04-18T04:46:05.217192",{"slug":914,"name":914,"fn":915,"description":916,"org":917,"tags":918,"stars":832,"repoUrl":833,"updatedAt":924},"qdrant-scaling-data-volume","scale Qdrant data volume","Guides Qdrant data volume scaling decisions. Use when someone asks 'data doesn't fit on one node', 'too much data', 'need more storage', 'vertical or horizontal scaling', 'tenant scaling', 'time window rotation', or 'data growth exceeds capacity'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[919,920,921,922,923],{"name":818,"slug":819,"type":13},{"name":821,"slug":822,"type":13},{"name":824,"slug":825,"type":13},{"name":827,"slug":828,"type":13},{"name":830,"slug":831,"type":13},"2026-04-18T04:46:07.684464",{"slug":926,"name":926,"fn":927,"description":928,"org":929,"tags":930,"stars":832,"repoUrl":833,"updatedAt":936},"qdrant-scaling-qps","scale Qdrant query throughput","Guides Qdrant query throughput (QPS) scaling. Use when someone asks 'how to increase QPS', 'need more throughput', 'queries per second too low', 'batch search', 'read replicas', or 'how to handle more concurrent queries'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[931,932,933,934,935],{"name":818,"slug":819,"type":13},{"name":821,"slug":822,"type":13},{"name":827,"slug":828,"type":13},{"name":849,"slug":850,"type":13},{"name":830,"slug":831,"type":13},"2026-04-18T04:46:08.905219",{"slug":938,"name":938,"fn":939,"description":940,"org":941,"tags":942,"stars":832,"repoUrl":833,"updatedAt":948},"qdrant-scaling-query-volume","scale Qdrant query volume and pagination","Guides Qdrant query volume scaling. Use when someone asks 'query returns too many results', 'scroll performance', 'large limit values', 'paginating search results', 'fetching many vectors', or 'high cardinality results'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[943,944,945,946,947],{"name":821,"slug":822,"type":13},{"name":827,"slug":828,"type":13},{"name":849,"slug":850,"type":13},{"name":830,"slug":831,"type":13},{"name":880,"slug":881,"type":13},"2026-04-18T04:46:11.371326",{"slug":950,"name":950,"fn":951,"description":952,"org":953,"tags":954,"stars":832,"repoUrl":833,"updatedAt":964},"qdrant-search-quality-diagnosis","diagnose Qdrant search quality issues","Diagnoses Qdrant search quality issues. Use when someone reports 'results are bad', 'wrong results', 'not relevant results', 'missing matches', 'recall is low', 'approximate search worse than exact', 'which embedding model', or 'quality dropped after quantization'. Also use when search quality degrades without obvious changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[955,958,961,962,963],{"name":956,"slug":957,"type":13},"Analytics","analytics",{"name":959,"slug":960,"type":13},"Data Quality","data-quality",{"name":890,"slug":891,"type":13},{"name":830,"slug":831,"type":13},{"name":880,"slug":881,"type":13},"2026-04-18T04:46:17.579894",{"slug":966,"name":966,"fn":967,"description":968,"org":969,"tags":970,"stars":832,"repoUrl":833,"updatedAt":976},"qdrant-search-speed-optimization","optimize Qdrant search speed","Diagnoses and fixes slow Qdrant search. Use when someone reports 'search is slow', 'high latency', 'queries take too long', 'low QPS', 'throughput too low', 'filtered search is slow', or 'search was fast but now it's slow'. Also use when search performance degrades after config changes or data growth.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[971,972,973,974,975],{"name":956,"slug":957,"type":13},{"name":827,"slug":828,"type":13},{"name":849,"slug":850,"type":13},{"name":830,"slug":831,"type":13},{"name":880,"slug":881,"type":13},"2026-04-18T04:46:03.987332",{"slug":978,"name":978,"fn":979,"description":980,"org":981,"tags":982,"stars":832,"repoUrl":833,"updatedAt":988},"qdrant-search-strategies","select optimal Qdrant search strategies","Guides Qdrant search strategy selection. Use when someone asks 'should I use hybrid search?', 'BM25 or sparse vectors?', 'how to rerank?', 'results are not relevant', 'I don't get needed results from my dataset but they're there', 'retrieval quality is not good enough', 'results too similar', 'need diversity', 'MMR', 'relevance feedback', 'recommendation API', 'discovery API', 'ColBERT reranking', or 'missing keyword matches'",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[983,984,985,986,987],{"name":818,"slug":819,"type":13},{"name":956,"slug":957,"type":13},{"name":821,"slug":822,"type":13},{"name":830,"slug":831,"type":13},{"name":880,"slug":881,"type":13},"2026-04-18T04:46:18.812306",45,{"items":991,"total":202},[992,998],{"slug":4,"name":4,"fn":5,"description":6,"org":993,"tags":994,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[995,996,997],{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":18,"slug":19,"type":13},{"slug":999,"name":999,"fn":1000,"description":1001,"org":1002,"tags":1003,"stars":20,"repoUrl":21,"updatedAt":1017},"error-messages","apply error message style guidelines","Error Message Style Guide for Validation Errors",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1004,1007,1010,1011,1014],{"name":1005,"slug":1006,"type":13},"Design","design",{"name":1008,"slug":1009,"type":13},"Documentation","documentation",{"name":9,"slug":8,"type":13},{"name":1012,"slug":1013,"type":13},"UX Copy","ux-copy",{"name":1015,"slug":1016,"type":13},"Writing","writing","2026-05-07T05:48:45.283097"]