Awesome-omni-skill update-instruction
Create, update, or manage universal-ai-config instruction templates. Handles finding existing instructions, deciding whether to create or modify, and writing the template.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/update-instruction" ~/.claude/skills/diegosouzapw-awesome-omni-skill-update-instruction && rm -rf "$T"
manifest:
skills/data-ai/update-instruction/SKILL.mdsource content
Manage Instruction Templates
Instructions are persistent context and rules that apply to AI conversations, scoped by file patterns or always-on.
Finding the Right Instruction
1. Search existing instructions
List files in
<%= instructionTemplatePath() %>/ and read their frontmatter (description, globs) to understand what each covers and its scope.
2. Match the user's intent to existing files
Look for instructions that already cover the same topic or a closely related topic. Consider:
- Exact match: an instruction about the same subject exists → update it
- Partial overlap: the topic fits within the scope of a broader instruction → add to it rather than creating a separate file
- Multiple candidates: several instructions touch on the topic → pick the one whose
and purpose align best with the user's intentglobs
3. Determine scope for new instructions
If no existing instruction fits, investigate the project to decide where the instruction belongs:
- Search the codebase for how the topic is used — find which files and directories are relevant
- Cross-reference with the user's wording — the instruction may apply broadly (e.g. "always validate env vars") or narrowly (e.g. "feature flags in API routes should use env vars")
- Choose the right scoping:
- If the rule is universal across the project → use
alwaysApply: true - If it applies to a specific area → use
matching only the relevant files/directoriesglobs - If the topic appears in many places but the instruction only makes sense for a subset, scope to that subset
- If the rule is universal across the project → use
Example: The user says "feature flags should be loaded from env vars." Feature flags might appear in 10 places across the codebase, but if only the API layer loads them from config, the right scope is
globs: ["src/api/**"] rather than alwaysApply: true.
Deciding What to Do
- Create new: when the topic is distinct from all existing instructions
- Update existing: when an instruction already covers the topic but needs changes — modify its content or frontmatter
- Add per-target override: when a frontmatter field needs different values per target, use the override object syntax:
description: claude: Claude-specific description copilot: Copilot-specific description default: Default description - Delete: when an instruction is obsolete or fully superseded by another
Creating a New Instruction
- Create a
file in.md
with a descriptive name (e.g.<%= instructionTemplatePath() %>/
)error-handling.md - Add YAML frontmatter with at minimum a
description - Write the instruction body
Frontmatter Fields
See the Instructions section in
<%= instructionPath('uac-template-guide') %> for the complete field reference. Key fields: description, globs, alwaysApply, excludeAgent.
When to use alwaysApply
vs globs
alwaysApplyglobs- Use
for project-wide conventions that should always be activealwaysApply: true - Use
to scope instructions to specific file types or directories (e.g.globs
for API-specific rules)["src/api/**"] - If neither is set, the instruction may still be applied by some targets based on relevance
Example
--- description: TypeScript coding conventions globs: ["**/*.ts", "**/*.tsx"] --- Follow these TypeScript conventions: - Use strict mode - Prefer interfaces over type aliases for object shapes - Use explicit return types on exported functions