agentleFS
JustineDevsJustineDevs/Collection/Context-Engineering/SKILL.md

context-engineering

Skill1 starsChanged 9 months agoMITView on GitHub

Context Engineering patterns for AI development and prompting. Use when the user wants to reduce tokens, avoid lost-in-the-middle, and structure prompts using Skeleton-of-Thought, token-efficient diff updates, XML tagging, symbolic variables, negative constraints, or LLMBundle-style context packaging.

131 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use using-agent-skills, idea-refine and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • LLl0k0laDSkill

    using-agent-skills

    Use when starting a session or when you need to discover which skill applies to the current task. This is the meta-skill that governs how all other skills are discovered and invoked.

    Also in 36 projects that use this

  • LLl0k0laDSkill

    idea-refine

    Refine ideas through structured divergent and convergent thinking. Use "idea-refine" or "ideate" to trigger.

    Also in 44 projects that use this

  • HK-hubSkill

    deprecation-and-migration

    Manages deprecation and migration. Use when removing old systems, APIs, or features. Use when migrating users from one implementation to another. Use when deciding whether to maintain or sunset existing code.

    Also in 40 projects that use this

  • MrCipherSmithSkill

    constraint-driven-development

    Use when a project needs a persistent, measurable quality bar — starting a project without documented standards, 'set up constraints', or when coverage/perf/a11y thresholds get re-debated per-PR. Produces CONSTRAINTS.md with enforceable numbers, ratchets, and a guard against silent weakening. NOT for throwaway prototypes or a one-off CI setup.

    Also in 14 projects that use this

  • HK-hubSkill

    source-driven-development

    Grounds every implementation decision in official documentation. Use when you want authoritative, source-cited code free from outdated patterns. Use when building with any framework or library where correctness matters.

    Also in 44 projects that use this

  • +6 more from LLl0k0laD
  • +1 more from HK-hub

The file

We split this skill into the rules it gives an agent

10 rules. 0 are common, 6 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 117 edited versions we read keep these.

  • 6

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before any user applies these techniques, always do the following:

    line 15
  2. Distinctive:

    Only include the files that matter for the current change, not the whole repo.

    line 20
  3. Very specific:

    Use the XML tags in this skill (<global_rules>, <file>, <task>) so any LLM knows what is rules, what is code, and what is the task.

    line 22
  4. Distinctive:

    Always end prompts with instructions like “No preamble.

    line 24
  5. Distinctive:

    Goal: Stop paying for full-file rewrites.

    line 72
  6. Distinctive:

    Goal: Create hard boundaries between rules, files, and tasks so the model does not mix contexts.

    line 106
  7. Distinctive:

    Goal: Remove unneeded prose; pay only for code or the minimal output you want.

    line 158
  8. Very specific:

    If you have the external tool llmbundle installed:

    line 227
  9. Very specific:

    Run llmbundle on the files or directories you want to share (see its README for exact commands and security guidance).

    line 229
  10. Very specific:

    Treat the outer bash structure as a container and only modify file contents between the heredoc EOF markers, as described in the llmbundle …

    line 231

“Common” is measured: kept by at least 6 in 10 of the 117 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Context Engineering Skill

Modern LLMs bill you for every token you send. Large, unstructured prompts lead to higher cost and worse reasoning (lost-in-the-middle). This skill defines practical Context Engineering techniques and shows how to apply them in your current setup, regardless of which editor or AI product a user has.


0. Non‑Negotiable Pre‑Actions

Before any user applies these techniques, always do the following:

  1. Define the objective in one sentence.
    Example: “Add input validation to app.py and factor shared logic into utils/transform.py.”
  2. Limit the scope.
    Only include the files that matter for the current change, not the whole repo.
  3. Wrap context with hard boundaries.
    Use the XML tags in this skill (<global_rules>, <file>, <task>) so any LLM knows what is rules, what is code, and what is the task.
  4. State negative constraints.
    Always end prompts with instructions like “No preamble. No explanations. Output code or SEARCH/REPLACE blocks only.”
  5. Test on a small example first.
    Try the pattern on one small function or file before applying it to a large refactor. If the model output is noisy, tighten constraints and retry.

These pre‑actions are model‑ and tool‑agnostic and should be followed by every user to make the skill reliable.


1. Skeleton-of-Thought (SoT) Prompting

Goal: Give the model the shape of your code instead of full implementations.

How it looks (blueprint instead of full file):

def process_data(input_str: str) -> dict:
    """Parses raw string into a structured dict."""
    ...

class ReportBuilder:
    """Builds JSON reports from normalized data."""

    def build(self, data: dict) -> str:
        """Return JSON summary."""
        ...

Prompt pattern:

I am working on this project. Here is the skeleton:
<file name="pipeline.py">
def process_data(input_str: str) -> dict:
    """Parses raw string into a structured dict."""
    ...
</file>

Please implement process_data to parse JSON, handle errors, and return a dict.

Execution steps:

  • Strip function bodies (keep signatures, docstrings, and class layout).
  • Send only the skeleton when you want new logic or refactors.

2. Token-Efficient Diff Updates

Goal: Stop paying for full-file rewrites; request focused changes.

Search/replace format:

Do not rewrite the whole file.
Respond only with SEARCH/REPLACE blocks in this format:

SEARCH:
old_code_block
REPLACE:
new_code_block

Example usage:

Here is the current code in handler.py:
<file name="handler.py">
def handle(event):
    user = get_user(event["id"])
    # TODO: add logging and error handling
    return user
</file>

Update it to add logging and catch KeyError. Use SEARCH/REPLACE blocks only.

LLMs then return minimal patches instead of re-typing the file.


3. XML Tagging for Modular Context

Goal: Create hard boundaries between rules, files, and tasks so the model does not mix contexts.

Pattern:

<global_rules>
  - Follow PEP8.
  - Use snake_case for functions.
</global_rules>

<file name="utils.py">
def slugify(name: str) -> str:
    ...
</file>

<task>
Add a logging decorator to functions in utils.py and apply it to slugify.
</task>

Why this works: LLMs are trained to respect XML-like tags as structure. Wrapping each file or rule block in tags keeps the model from blending unrelated parts.


4. Symbolic Variables (Reusable Rules)

Goal: Define long rule sets once, then reference them by handle.

Header section:

[RULE_STRICT_TYPES]:
  - Always use Python type hints.
  - Use Pydantic models for external I/O.

[RULE_STYLE]:
  - Use snake_case for functions and variables.
  - Add a one-line docstring to public functions.

Later in the prompt:

Implement a user login function. Apply [RULE_STRICT_TYPES] and [RULE_STYLE].

This keeps the task-specific part short and readable while still enforcing strong constraints.


5. Negative Constraints (Token Filter)

Goal: Remove unneeded prose; pay only for code or the minimal output you want.

Common constraints:

Constraints:
- No preamble.
- Do not explain the code.
- Output code only.

Prompt example:

Refactor the following function to use early returns and clearer naming.
Constraints:
- No preamble.
- No explanation.
- Output code only.

6. LLMBundle and Context Packages

LLMBundle (e.g. Context-Engineering/llmbundle) acts as a context manager for multi-file projects.

Desired behavior:

  • Wrap each file in <file name="...">...</file> tags.
  • Include a header with <global_rules> and symbolic rule blocks.
  • Omit noise files like node_modules/, build artifacts, and lockfiles.
  • Optionally add a table of contents at the top:
<bundle_index>
  - app.py
  - utils/transform.py
  - tests/test_transform.py
</bundle_index>

With LLMBundle, your prompt to an AI agent becomes:

<global_rules>
  - Follow PEP8.
  - Prefer pure functions when possible.
</global_rules>

<bundle_index>
  - app.py
  - utils/transform.py
</bundle_index>

<file name="app.py">
  ...code...
</file>

<file name="utils/transform.py">
  ...code...
</file>

<task>
Add input validation to app.py and factor shared logic into utils/transform.py.
</task>

Using llmbundle (optional helper)

If you have the external tool llmbundle installed:

  • Run llmbundle on the files or directories you want to share (see its README for exact commands and security guidance).
  • Open the generated script (for example project.sh) and paste its contents into your LLM conversation.
  • Treat the outer bash structure as a container and only modify file contents between the heredoc EOF markers, as described in the llmbundle header comments.

This skill does not require llmbundle and never executes it. It only describes how to use the tool if the user has chosen to install and verify it independently.


---

## 7. How To Apply This In Your Setup

1. **For new features:** Send a SoT skeleton of relevant files instead of full bodies.\n2. **For edits:** Ask for SEARCH/REPLACE style diffs, not entire files.\n3. **For multi-file work:** Wrap rules, files, and tasks in XML tags.\n4. **For repeated rules:** Define symbolic variables like [RULE_*] once at the top and reference them later.\n5. **For cost control:** Always end prompts with negative constraints (no preamble, no explanations) when you only need code or diffs.\n6. **With LLMBundle:** Use it to automatically package your repo into XML-tagged, token-efficient context before sending it to an AI agent.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.