)]}'
{".agents/skills/code-review/SKILL.md":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"00524b399acf3905965969e1402806a94ed323fd","unresolved":true,"context_lines":[{"line_number":109,"context_line":"   New tests?"},{"line_number":110,"context_line":"5. **Check for related changes** — if the change belongs to a Gerrit topic and"},{"line_number":111,"context_line":"   you haven\u0027t already loaded siblings (step 0), query the topic now to"},{"line_number":112,"context_line":"   understand the full scope (only if Gerrit MCP is available; otherwise skip)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"### 2. Verify Feature Approval (if applicable)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":4,"id":"92bf585f_70eba8bc","line":112,"range":{"start_line":112,"start_character":1,"end_line":112,"end_character":78},"updated":"2026-04-17 07:20:49.000000000","message":"I would add a specific point here for disagreements. This is not the first time we have a code review clash between two implementation directions. I would request the AI agent to ask the user what direction to take. Also we can enforce the AI agent to prove its own verdict and justify why, of course.","commit_id":"951a06bb44447ca69d5083d5a9364075997d0aca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":109,"context_line":"   New tests?"},{"line_number":110,"context_line":"5. **Check for related changes** — if the change belongs to a Gerrit topic and"},{"line_number":111,"context_line":"   you haven\u0027t already loaded siblings (step 0), query the topic now to"},{"line_number":112,"context_line":"   understand the full scope (only if Gerrit MCP is available; otherwise skip)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"### 2. Verify Feature Approval (if applicable)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":4,"id":"d903fb8d_88cf0e36","line":112,"range":{"start_line":112,"start_character":1,"end_line":112,"end_character":78},"in_reply_to":"92bf585f_70eba8bc","updated":"2026-04-17 12:20:55.000000000","message":"so as noted above i dont think this skill should hae any mcp awareness\nfirst the skill shoudl be renamed to gerrit-review but we shoudl have a seperate gerrit skill that knwo how  to prepare the context locally by delegating to other skills (repo clone, context extraction, comment/thread retirval) \n\nthis workflow skill should just orchstrate that \n\nafter builidhg a ai code review ci for the last 6 months one of the desions i was happy i made was that i did not make it based on the gerrit mcp or a diff based review approch.\n\nthe other thing i learnd very early on is hte same prinsipals of encapsulation and composition that we apply to normal software devleopment apply equally to skills and agnets defintions.\n\nwe really shoudl avoid poluting our context windows with many mcp servers,\n\nif we use subagent in this repo we shoudl have a small skill to warp them so we can hide the tools calls from the amin agent and only pass back the resouces.\nbut for the most part as i noted above claude at least can jsut get review context form gerrit with curl so skip if not present is not really a reasonabel thing here.\n\nwe can have a skill that know how to use the mcp server, git-reveiw,grt or curl to interact with gerrit without leaking that info into this skill.\n\nthis skill can just focus on what context to gather\n\nfor my ci i have 3 core context extactors\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/42af044a51633ee12152fccadbdf7a11d1af094e/agents/zuul-context-extractor.md\n\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/42af044a51633ee12152fccadbdf7a11d1af094e/agents/commit-summary.md\n\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/42af044a51633ee12152fccadbdf7a11d1af094e/agents/project-guidelines-extractor.md\n\nthose are \"library\" skill that workflow skill like this shoudl compose.","commit_id":"951a06bb44447ca69d5083d5a9364075997d0aca"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"00524b399acf3905965969e1402806a94ed323fd","unresolved":true,"context_lines":[{"line_number":134,"context_line":"  with its neighbors"},{"line_number":135,"context_line":"- Consider whether the change is **globally sound** — does it fit the"},{"line_number":136,"context_line":"  project\u0027s architecture, or is it a locally correct solution that creates a"},{"line_number":137,"context_line":"  larger problem?"},{"line_number":138,"context_line":"- If reviewing a bug fix, understand the code path that leads to the bug —"},{"line_number":139,"context_line":"  does the fix address the root cause or just a symptom?"},{"line_number":140,"context_line":"- If the change seems cosmetic or tangential to the stated intent, flag it —"}],"source_content_type":"text/x-markdown","patch_set":4,"id":"22a3acaf_49d2c478","line":137,"range":{"start_line":137,"start_character":2,"end_line":137,"end_character":17},"updated":"2026-04-17 07:20:49.000000000","message":"I would also mention some references to related patches:\n* If this is part of a series of patches, check for the topic in gerrit\n* If the patch belongs to a git chain","commit_id":"951a06bb44447ca69d5083d5a9364075997d0aca"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"00524b399acf3905965969e1402806a94ed323fd","unresolved":true,"context_lines":[{"line_number":154,"context_line":"- RPC method signature changes"},{"line_number":155,"context_line":"- Versioned object field changes"},{"line_number":156,"context_line":"- Database schema migrations"},{"line_number":157,"context_line":"- API request/response schema changes"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"### 5. Testing Adequacy Check"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":4,"id":"4c9d6caf_842bf730","line":157,"updated":"2026-04-17 07:20:49.000000000","message":"I know that this depends on the project. Nove uses microversions, Neutron API extensions. I think this should be also mentioned here.","commit_id":"951a06bb44447ca69d5083d5a9364075997d0aca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":154,"context_line":"- RPC method signature changes"},{"line_number":155,"context_line":"- Versioned object field changes"},{"line_number":156,"context_line":"- Database schema migrations"},{"line_number":157,"context_line":"- API request/response schema changes"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"### 5. Testing Adequacy Check"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":4,"id":"5489db74_397d35f5","line":157,"in_reply_to":"4c9d6caf_842bf730","updated":"2026-04-17 12:20:55.000000000","message":"+1\nbut not hear in a set of topic docs\nknowalage/overlays/topics/rpc-versioning.md\nknowalage/overlays/topics/micoverions.md\nknowalage/overlays/topics/api-extentions.md\nknowalage/overlays/topics/api-versioning.md\n\nthen in \nknowalage/overlays/repos/neutron.md it woudl refence\nknowalage/overlays/topics/api-extentions.md\n\nalthough long term it would be optimal if the AGENT.md in neutron pointed to \na versioning.rst in its contibutor docs for example that contianed all fo the\nproject specific pratcatices so what we could evenualy remove the generic one or make thatm a fallback.","commit_id":"951a06bb44447ca69d5083d5a9364075997d0aca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"name: code-review"},{"line_number":3,"context_line":"description: \u003e"},{"line_number":4,"context_line":"  Review OpenStack code changes for intent correctness, architectural"},{"line_number":5,"context_line":"  consistency, versioning rules, and testing adequacy. Use when reviewing a"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"23f3633f_1b37f346","line":2,"range":{"start_line":2,"start_character":6,"end_line":2,"end_character":10},"updated":"2026-04-17 12:20:55.000000000","message":"this is not what i woudl condier a code review skill\nthis si a gerrit-review skill\n\ni.e. its not intened to review your code locally and give you feedback its inteneed instead to do a review of a remote repo.\n\nyou are effective defining a gerrit version of \nhttps://github.com/anthropics/claude-code/tree/main/plugins/pr-review-toolkit","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":37,"context_line":"     credential-adjacent code, or SSL/TLS operations"},{"line_number":38,"context_line":"4. If no knowledge file exists for the project, proceed with generic OpenStack"},{"line_number":39,"context_line":"   review conventions from the project\u0027s in-tree `doc/source/contributor/`"},{"line_number":40,"context_line":"   documentation"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"**Context inheritance**: When invoking subagents, always pass the"},{"line_number":43,"context_line":"`rules/review.md` and `knowledge/{project}.md` content as context. Rules and"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"576d328b_958a0841","line":40,"updated":"2026-04-17 12:20:55.000000000","message":"for an acual code review skill this woudl not be required.\n\nthis si  really an orchstrator skill that is going to prefpare the revewi font text but the actual code review shoudl be delegated to a diffetn skill that only does the review with the prepared context locally.","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":54,"context_line":"  changes"},{"line_number":55,"context_line":"- A description of changes to evaluate"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"## Process"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"### 0. Handle Gerrit Topic (if provided)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":5,"id":"bd792db1_6cc8304a","line":57,"updated":"2026-04-17 12:20:55.000000000","message":"so to my earlyer poitn this is accting as a workflow skill or orstration liek my orstation agent\n\nhttps://github.com/SeanMooney/openstack-ai-style-guide/blob/42af044a51633ee12152fccadbdf7a11d1af094e/agents/teim-review-agent.md","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If the user provides a **Gerrit topic** instead of a single change:"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"- **If Gerrit MCP is available**:"},{"line_number":68,"context_line":"  1. **Query all changes for the topic** — use the Gerrit MCP server to list"},{"line_number":69,"context_line":"     all open changes with that topic (e.g., query"},{"line_number":70,"context_line":"     `topic:{name} status:open project:openstack/{project}`)"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"2f5ad03a_2828e3b5","line":67,"updated":"2026-04-17 12:20:55.000000000","message":"so i have a grt tool which is beasiclly git-review in rust that i plan to build to do other things\n\ni ahve a skill that can then trivially wrap that cli and have it retive review contxt.\n\ni dotn thnkw e shoudl be forceing mcp here.\n\ni think if you want to do this we shoudl have a gerrit libary skill that know\nhow to retirve gerrit context using a range of options\n\nill now that most models i have used already nativiely know how to use the gerrit rest api with curl so using mcp for gerrit is qustionable.\n\nif it is used when it repots comment it shoudl explcity use the bot comment interface not the human comment interace to make it clearly that that the comment was ai submitted.","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":67,"context_line":"- **If Gerrit MCP is available**:"},{"line_number":68,"context_line":"  1. **Query all changes for the topic** — use the Gerrit MCP server to list"},{"line_number":69,"context_line":"     all open changes with that topic (e.g., query"},{"line_number":70,"context_line":"     `topic:{name} status:open project:openstack/{project}`)"},{"line_number":71,"context_line":"  2. **Present the list** — show the user all changes in the topic with their"},{"line_number":72,"context_line":"     subject, change number, and status. Ask which change they want to review"},{"line_number":73,"context_line":"     in depth."}],"source_content_type":"text/x-markdown","patch_set":5,"id":"881673e5_504c361c","line":70,"updated":"2026-04-17 12:20:55.000000000","message":"again this is martially a different workflow\n\nhaving the ability to review a branch (topic) vs commit is fine but we need to think about the ux here.\n\ndiff elvel rfeview are not a good thing\n\nif we are chreating review skill like this we need to do t he review with the chagne checked out into a local repo so that he agent can reivew the change in the fully context of the repo.\n\nwhich mean unless you are operating form a state where we have already checked out the change we want to review we need to have this gerrit-review orchstraor clone the repo if not already present, check out the change and then perform the review with that local content.","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":111,"context_line":"   you haven\u0027t already loaded siblings (step 0), query the topic now to"},{"line_number":112,"context_line":"   understand the full scope (only if Gerrit MCP is available; otherwise skip)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"### 2. Verify Feature Approval (if applicable)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"If the change implements a feature (not a bug fix or minor refactor), verify"},{"line_number":117,"context_line":"that the feature has been approved:"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"ec378d98_9904cb36","line":114,"updated":"2026-04-17 12:20:55.000000000","message":"this again is project spefic knowlage that hsoudl live in the knowlage bas as a topic doc and be gather via a project-guideliens skill\n\nit shoudl not be encoded in the review it self direcly","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"### 3. Read the Code in Context"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Do not review the diff in isolation. Understand the broader context:"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"- Read surrounding code to assess whether the change is **locally consistent**"},{"line_number":134,"context_line":"  with its neighbors"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"327c6444_a2ba59cb","line":131,"updated":"2026-04-17 12:20:55.000000000","message":"well this shoudl not be diff based at all.\nit shoudl use a locall checked out copy of the repo.\nthis is the only way for it to be abel to find brakanges in files that were not modfifed in the diff.","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":143,"context_line":"  principles in `rules/review.md` (verify reachability, compare with baseline,"},{"line_number":144,"context_line":"  prefer loud failure over silent security degradation)."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"### 4. Versioning Rules Check (Blockers)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Versioning violations will definitely block a patch. The specific rules vary"},{"line_number":149,"context_line":"by project — defer to `knowledge/{project}.md` or the project persona for"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"9a14d38f_7bdbfab4","line":146,"updated":"2026-04-17 12:20:55.000000000","message":"again this should be encoded in the relevent git repo contibutor docs\nnot in this skill.","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"}],".gitignore":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Skill artifacts are generated at runtime and should not be committed"},{"line_number":2,"context_line":"artifacts/*"},{"line_number":3,"context_line":"!artifacts/.gitkeep"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"b8980b78_70d6d6f0","line":1,"updated":"2026-04-17 12:20:55.000000000","message":"we need to decice where this would be or what ti would be called but sure we can agree on a location like this but that shoudl eb a sepreate review before this.","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"}],"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Includes:"},{"line_number":14,"context_line":"- .agents/skills/code-review/SKILL.md with review process and output"},{"line_number":15,"context_line":"  template"},{"line_number":16,"context_line":"- .agents/skills/code-review/scripts/detect-mcp.sh for Gerrit MCP"},{"line_number":17,"context_line":"  server detection"},{"line_number":18,"context_line":"- rules/review.md with review principles, MCP integration guidelines,"},{"line_number":19,"context_line":"  and writing style rules"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"99483a1d_84887a04","line":17,"range":{"start_line":16,"start_character":3,"end_line":17,"end_character":18},"updated":"2026-04-17 12:20:55.000000000","message":"no if we have any mcp integration it shoudl be pare of a sepreate skill that\nuses the revierw skill not part of it.\n\nim also not conviced we shoudl have skill that actuly auto propose the coment in general but perhaps.","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"}],"rules/review.md":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"00524b399acf3905965969e1402806a94ed323fd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6247ddcf_9a8aa8db","line":58,"updated":"2026-04-17 07:20:49.000000000","message":"I would also mention here some style references. Sean provided very good ones in https://github.com/SeanMooney/openstack-ai-style-guide/tree/master/references","commit_id":"951a06bb44447ca69d5083d5a9364075997d0aca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fdc45c72_4aaec6c7","line":58,"in_reply_to":"6247ddcf_9a8aa8db","updated":"2026-04-17 12:20:55.000000000","message":"i need to finish my refactor fo https://github.com/SeanMooney/openstack-ai-style-guide/blob/42af044a51633ee12152fccadbdf7a11d1af094e/agents/code-review-agent.md\n\nto remove all the orstation parts out of it and factor it down to an actual review skill taht just takes pre prepared context + the repo path to reivew and jsut does the review provideing the stucture output.\n\nbut yes much of the gudnace here feel liek it should be in the actual code review skill which form my prerpective actully doe not expist yet.\n\nas noted the current one is really a gerrit-review kill like teh pr-review skilsl that focuses more on the review workflow/infrastucrue then the review itslef.","commit_id":"951a06bb44447ca69d5083d5a9364075997d0aca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"470a5555f9f356f40c248953766e093dfb0059d5","unresolved":true,"context_lines":[{"line_number":3,"context_line":"Behavioral rules for all review skills. Loaded automatically via"},{"line_number":4,"context_line":"`rules/review.md` — skills reference this file, do not duplicate its content."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"## Gerrit MCP"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Review skills support **Gerrit MCP** (full integration) and a **REST API"},{"line_number":9,"context_line":"fallback** when MCP is unavailable. Availability is detected at runtime with"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"8a57f112_41730e64","line":6,"updated":"2026-04-17 12:20:55.000000000","message":"again we shoudl not assume mcp in this doc.\n\n\ntaht is not a core part of reviewing.\n\nthat is a possibel way to get context\n\nand not really the optimal one in may cases.","commit_id":"61f5064bc8fb17b8bf33eea45afafc6c8da96202"}]}
