diff --git a/.github/instruction-surfaces.json b/.github/instruction-surfaces.json index cfa00fad5..af68c5af4 100644 --- a/.github/instruction-surfaces.json +++ b/.github/instruction-surfaces.json @@ -247,7 +247,7 @@ "consumers": ["codex", "claude-code", "copilot", "gemini-cli", "human"], "tasks": ["code-review", "readme-authoring", "zsh-plugin-scaffolding"], "file_patterns": [ - "**/*.plugin.zsh,**/init.zsh,templates/readme/zsh-plugin.md,.github/skills/new-zsh-plugin/**,.github/agents/zsh-plugin-standard-reviewer.agent.md" + "**/*.plugin.zsh,**/init.zsh,templates/readme/zsh-plugin.md,.github/skills/zsh-plugin/**,.github/agents/zsh-plugin-standard-reviewer.agent.md" ], "required": true, "review_owner": "z-shell maintainers", @@ -370,8 +370,8 @@ "canonical_for": [] }, { - "id": "skill-new-zsh-plugin", - "path": ".github/skills/new-zsh-plugin/SKILL.md", + "id": "skill-zsh-plugin", + "path": ".github/skills/zsh-plugin/SKILL.md", "kind": "skill", "authority": "advisory", "consumers": ["copilot"], diff --git a/.github/instructions/zsh-plugin-standard-aliases.instructions.md b/.github/instructions/zsh-plugin-standard-aliases.instructions.md index 8bb511928..d4fed956f 100644 --- a/.github/instructions/zsh-plugin-standard-aliases.instructions.md +++ b/.github/instructions/zsh-plugin-standard-aliases.instructions.md @@ -1,6 +1,6 @@ --- description: "Route generic review and README tasks on plugin-shaped files to the canonical Zsh plugin guidance" -applyTo: "**/*.plugin.zsh,**/init.zsh,templates/readme/zsh-plugin.md,.github/skills/new-zsh-plugin/**,.github/agents/zsh-plugin-standard-reviewer.agent.md" +applyTo: "**/*.plugin.zsh,**/init.zsh,templates/readme/zsh-plugin.md,.github/skills/zsh-plugin/**,.github/agents/zsh-plugin-standard-reviewer.agent.md" --- # Zsh Plugin Standard Task Aliases diff --git a/.github/skills/new-zsh-plugin/SKILL.md b/.github/skills/zsh-plugin/SKILL.md similarity index 99% rename from .github/skills/new-zsh-plugin/SKILL.md rename to .github/skills/zsh-plugin/SKILL.md index 4a6cd4cbb..7cda00c81 100644 --- a/.github/skills/new-zsh-plugin/SKILL.md +++ b/.github/skills/zsh-plugin/SKILL.md @@ -1,5 +1,5 @@ --- -name: new-zsh-plugin +name: zsh-plugin description: Use when a user asks to create a new Zsh plugin, start a plugin from scratch, or add a plugin skeleton. disable-model-invocation: true --- diff --git a/.github/skills/new-zsh-plugin/templates/plugin.plugin.zsh b/.github/skills/zsh-plugin/templates/plugin.plugin.zsh similarity index 100% rename from .github/skills/new-zsh-plugin/templates/plugin.plugin.zsh rename to .github/skills/zsh-plugin/templates/plugin.plugin.zsh diff --git a/PATTERNS.md b/PATTERNS.md index f97224e8a..39f00486e 100644 --- a/PATTERNS.md +++ b/PATTERNS.md @@ -30,7 +30,7 @@ function name instead of the source file. New work must follow `.github/instructions/zsh-scripting.instructions.md` and start from -`.github/skills/new-zsh-plugin/templates/plugin.plugin.zsh`. No replacement is +`.github/skills/zsh-plugin/templates/plugin.plugin.zsh`. No replacement is published here because a safe replacement has not yet been observed in at least two listed repositories. @@ -53,7 +53,7 @@ exact pre-load value, so an unload function cannot restore that state. New work must follow `.github/instructions/zsh-scripting.instructions.md` and use -`.github/skills/new-zsh-plugin/templates/plugin.plugin.zsh`. This catalog does +`.github/skills/zsh-plugin/templates/plugin.plugin.zsh`. This catalog does not publish a replacement until the complete snapshot and restoration shape is observed in at least two listed repositories. @@ -78,7 +78,7 @@ derivation or lifecycle ownership safe. New work must follow `.github/instructions/zsh-scripting.instructions.md` and use -`.github/skills/new-zsh-plugin/templates/plugin.plugin.zsh`. This catalog does +`.github/skills/zsh-plugin/templates/plugin.plugin.zsh`. This catalog does not publish a replacement because the complete first-source ownership and unload-restoration shape has not been observed in at least two listed repositories. diff --git a/scripts/test_validate_agent_policy.py b/scripts/test_validate_agent_policy.py index b2ccd19a4..4b8f85fd7 100644 --- a/scripts/test_validate_agent_policy.py +++ b/scripts/test_validate_agent_policy.py @@ -1911,7 +1911,7 @@ def test_public_manifest_routes_zsh_plugin_standard(self) -> None: "file_patterns": [ "**/*.plugin.zsh,**/init.zsh," "templates/readme/zsh-plugin.md," - ".github/skills/new-zsh-plugin/**," + ".github/skills/zsh-plugin/**," ".github/agents/zsh-plugin-standard-reviewer.agent.md" ], "required": True, diff --git a/scripts/test_validate_zsh_standard_policy.py b/scripts/test_validate_zsh_standard_policy.py index 61a9bf7e9..f4680c18a 100644 --- a/scripts/test_validate_zsh_standard_policy.py +++ b/scripts/test_validate_zsh_standard_policy.py @@ -27,8 +27,8 @@ ) CONSUMER_PATHS = ( ".github/agents/zsh-plugin-standard-reviewer.agent.md", - ".github/skills/new-zsh-plugin/SKILL.md", - ".github/skills/new-zsh-plugin/templates/plugin.plugin.zsh", + ".github/skills/zsh-plugin/SKILL.md", + ".github/skills/zsh-plugin/templates/plugin.plugin.zsh", ".github/skills/zunit-test/SKILL.md", "PATTERNS.md", ".github/README.md", @@ -1559,7 +1559,7 @@ def test_rejects_hidden_consumer_canonical_references(self) -> None: ) reference_consumers = ( ".github/agents/zsh-plugin-standard-reviewer.agent.md", - ".github/skills/new-zsh-plugin/SKILL.md", + ".github/skills/zsh-plugin/SKILL.md", ".github/skills/zunit-test/SKILL.md", "PATTERNS.md", ".github/README.md", @@ -1611,7 +1611,7 @@ def test_rejects_hidden_consumer_canonical_references(self) -> None: def test_rejects_container_fenced_or_indented_canonical_references( self, ) -> None: - relative_path = ".github/skills/new-zsh-plugin/SKILL.md" + relative_path = ".github/skills/zsh-plugin/SKILL.md" canonical_paths = ( ".github/instructions/zsh-scripting.instructions.md", "lib/zsh-standard-policy.json", @@ -1714,7 +1714,7 @@ def test_rejects_coordinated_consumer_manifest_path_drift(self) -> None: ) def test_rejects_consumer_rule_definition_heading(self) -> None: - relative_path = ".github/skills/new-zsh-plugin/SKILL.md" + relative_path = ".github/skills/zsh-plugin/SKILL.md" cases = ( ("plain", "### zsh/options/localize"), ("backticked", "### `zsh/options/localize`"), @@ -1756,7 +1756,7 @@ def test_rejects_consumer_rule_definition_heading(self) -> None: self.assertEqual(errors, []) def test_rejects_valid_atx_h3_rule_heading_variants(self) -> None: - relative_path = ".github/skills/new-zsh-plugin/SKILL.md" + relative_path = ".github/skills/zsh-plugin/SKILL.md" visible_headings = ( " ### zsh/options/localize", "### zsh/options/localize ###", @@ -1835,7 +1835,7 @@ def test_rejects_valid_atx_h3_rule_heading_variants(self) -> None: def test_container_fences_hide_only_their_normative_h3_content( self, ) -> None: - relative_path = ".github/skills/new-zsh-plugin/SKILL.md" + relative_path = ".github/skills/zsh-plugin/SKILL.md" container_fences = ( ( "list", @@ -1922,7 +1922,7 @@ def test_visual_column_and_continuation_fences_reprocess_visible_h3( ) root = self.make_fixture() - relative_path = ".github/skills/new-zsh-plugin/SKILL.md" + relative_path = ".github/skills/zsh-plugin/SKILL.md" path = root / relative_path path.write_text( path.read_text(encoding="utf-8") + "\n" + source + "\n", @@ -1953,8 +1953,8 @@ def test_repair_2_consumer_parser_outputs_match_frozen_golden(self) -> None: paths = ( ".github/instructions/zsh-scripting.instructions.md", ".github/agents/zsh-plugin-standard-reviewer.agent.md", - ".github/skills/new-zsh-plugin/SKILL.md", - ".github/skills/new-zsh-plugin/templates/plugin.plugin.zsh", + ".github/skills/zsh-plugin/SKILL.md", + ".github/skills/zsh-plugin/templates/plugin.plugin.zsh", ".github/skills/zunit-test/SKILL.md", "PATTERNS.md", ".github/README.md", @@ -1991,7 +1991,7 @@ def test_repair_2_consumer_parser_outputs_match_frozen_golden(self) -> None: self.assertEqual( digest, - "a8d395e678f606f0fd0c1e2a72dc233e5c82ed31887e8d967fa31a62ab7790b7", + "37c72293a0126040e1a5cc071a0082badbf1d396667d3d7feeb82b35a2659dc4", msg=( "The frozen golden covers the parsed output of every path in " f"{paths}. Editing any of them changes this digest, which is " @@ -2003,7 +2003,7 @@ def test_repair_2_consumer_parser_outputs_match_frozen_golden(self) -> None: ) def test_rejects_list_and_nested_container_rule_headings(self) -> None: - relative_path = ".github/skills/new-zsh-plugin/SKILL.md" + relative_path = ".github/skills/zsh-plugin/SKILL.md" additions = ( "- ### zsh/options/localize", "- ### `zsh/options/localize`", @@ -2183,7 +2183,7 @@ def test_positive_markdown_state_distinguishes_indented_content( def test_visible_paragraph_and_blank_list_continuations_satisfy_references( self, ) -> None: - relative_path = ".github/skills/new-zsh-plugin/SKILL.md" + relative_path = ".github/skills/zsh-plugin/SKILL.md" cases = ( ( ".github/instructions/zsh-scripting.instructions.md", @@ -2277,7 +2277,7 @@ def test_rejects_indented_blockquote_paragraph_contradiction(self) -> None: def test_rejects_blockquoted_h3_and_invalid_backtick_fence_opener( self, ) -> None: - relative_path = ".github/skills/new-zsh-plugin/SKILL.md" + relative_path = ".github/skills/zsh-plugin/SKILL.md" additions = ( "> ### zsh/options/localize", "> ### `zsh/options/localize`", @@ -2304,7 +2304,7 @@ def test_rejects_blockquoted_h3_and_invalid_backtick_fence_opener( def test_code_span_normalization_keeps_doubled_edge_spaces(self) -> None: root = self.make_fixture() - relative_path = ".github/skills/new-zsh-plugin/SKILL.md" + relative_path = ".github/skills/zsh-plugin/SKILL.md" path = root / relative_path path.write_text( path.read_text(encoding="utf-8") + "\n### ` zsh/options/localize `\n", @@ -2488,7 +2488,7 @@ def test_list_owned_fence_preserves_visible_reference_continuations( def test_leaf_blocks_cannot_supply_structural_headings(self) -> None: rule_id = "zsh/options/localize" - consumer_path = ".github/skills/new-zsh-plugin/SKILL.md" + consumer_path = ".github/skills/zsh-plugin/SKILL.md" hidden_h3_blocks = ( f"