Skip to main content

agent-skills-context-engineering

Master context engineering principles for building production-grade AI agent systems with effective context management, multi-agent architectures, and memory systems.

Ir a la instalación

Datos de origen

Repositorio
reason-machines/ai-agent-skills
Última actividad en el origen
16 de mayo de 2026 a las 21:22
Idioma detectado de SKILL.md
inglés
Estrellas
1
Forks
1

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
agent-skills-context-engineering
description
Master context engineering principles for building production-grade AI agent systems with effective context management, multi-agent architectures, and memory systems.
triggers
["build agent system with context engineering","optimize agent context window usage","implement multi-agent architecture","design agent memory system","compress agent context for long sessions","debug agent context degradation","evaluate agent performance with LLM-as-judge","build hosted coding agent with sandboxes"]
# Agent Skills for Context Engineering > Skill by [ara.so](https://ara.so) — AI Agent Skills collection. A comprehensive collection of Agent Skills for context engineering, multi-agent architectures, and production agent systems. This skill teaches principles for managing LLM context windows, designing effective agent architectures, and building production-grade agent systems. ## What This Project Does Agent Skills for Context Engineering provides battle-tested patterns for: - **Context Management**: Managing limited attention budgets, avoiding lost-in-middle degradation - **Multi-Agent Systems**: Orchestrator, peer-to-peer, and hierarchical architectures - **Memory Systems**: Short-term, long-term, and graph-based memory patterns - **Tool Design**: Building tools that agents can use effectively - **Evaluation**: LLM-as-judge frameworks for measuring agent quality - **Production Systems**: Hosted agents with sandboxed VMs and multiplayer support Unlike prompt engineering (crafting instructions), context engineering addresses holistic curation of all information in the context window: system prompts, tool definitions, retrieved documents, message history, and tool outputs. ## Installation ### For Claude Code (Recommended) **Step 1: Add the Marketplace** ```bash /plugin marketplace add muratcankoylan/Agent-Skills-for-Context-Engineering ``` **Step 2: Install the Plugin** ```bash /plugin install context-engineering@context-engineering-marketplace ``` Or browse and install: 1. Select `Browse and install plugins` 2. Select `context-engineering-marketplace` 3. Select `context-engineering` 4. Select `Install now` ### For Cursor (Open Plugins) Add to your `.cursor/plugins.json`: ```json { "plugins": [ { "name": "context-engineering", "repository": "muratcankoylan/Agent-Skills-for-Context-Engineering" } ] } ``` ### For Individual Skills Copy specific skills to your project: ```bash # Create skills directory mkdir -p .claude/skills # Add a specific skill (example: context-fundamentals) curl -o .claude/skills/context-fundamentals.md \ https://raw.githubusercontent.com/muratcankoylan/Agent-Skills-for-Context-Engineering/main/skills/context-fundamentals/SKILL.md ``` Available skills: `context-fundamentals`, `context-degradation`, `context-compression`, `context-optimization`, `latent-briefing`, `multi-agent-patterns`, `memory-systems`, `tool-design`, `filesystem-context`, `hosted-agents`, `evaluation`, `advanced-evaluation`, `project-development`, `bdi-mental-states` ## Core Concepts ### Context Window Management The fundamental challenge: context windows are constrained by attention mechanics, not raw token capacity. **Key degradation patterns:** - **Lost-in-the-middle**: Models lose track of information in the middle of long contexts - **U-shaped attention**: Strong attention at beginning and end, weak in middle - **Attention scarcity**: As context grows, attention per token decreases **Solution**: Find the smallest possible set of high-signal tokens. ### Progressive Disclosure Load information only when needed: ```python # skills/__init__.py - Lazy loading pattern class SkillRegistry: def __init__(self): self._skills = {} self._loaded = set() def get_skill_summary(self, skill_name: str) -> dict: """Load only name and description initially.""" return { "name": skill_name, "description": self._get_description(skill_name) } def load_skill(self, skill_name: str) -> dict: """Load full skill content only when activated.""" if skill_name not in self._loaded: self._skills[skill_name] = self._read_skill_file(skill_name) self._loaded.add(skill_name) return self._skills[skill_name] ``` ### Context Compression Strategies **Sliding Window:** ```python def sliding_window_context(messages: list, window_size: int = 10) -> list: """Keep only recent messages.""" if len(messages) <= window_size: return messages # Always keep system message system_msgs = [m for m in messages if m["role"] == "system"] recent_msgs = messages[-window_size:] return system_msgs + recent_msgs ``` **Summarization:** ```python async def compress_with_summary(messages: list, llm_client) -> list: """Compress old messages into summary.""" if len(messages) < 20: return messages # Keep recent messages uncompressed to_compress = messages[1:-10] # Skip system message and recent 10 recent = messages[-10:] # Generate summary summary_prompt = f"Summarize these messages concisely:\n{to_compress}" summary = await llm_client.complete(summary_prompt) return [ messages[0], # System message {"role": "assistant", "content": f"[Summary of previous conversation: {summary}]"}, *recent ] ``` ## Multi-Agent Patterns ### Orchestrator Pattern Single coordinator delegates to specialized workers: ```python from typing import List, Dict class OrchestratorAgent: def __init__(self, workers: Dict[str, Agent]): self.workers = workers async def process_task(self, task: str) -> str: # Determine which worker to use worker_name = await self._route_task(task) worker = self.workers[worker_name] # Delegate to worker with minimal context result = await worker.execute(task) return result async def _route_task(self, task: str) -> str: """Use LLM to determine which worker handles task.""" routing_prompt = f"""Given this task: {task} Available workers: - code_writer: Writes and modifies code - researcher: Gathers information and analyzes data - reviewer: Reviews code and provides feedback Which worker should handle this? Respond with just the worker name.""" return await self.llm.complete(routing_prompt) # Usage orchestrator = OrchestratorAgent({ "code_writer": CodeWriterAgent(), "researcher": ResearcherAgent(), "reviewer": ReviewerAgent() }) result = await orchestrator.process_task("Add error handling to the API client") ``` ### Peer-to-Peer Pattern Agents collaborate directly: ```python class PeerAgent: def __init__(self, name: str, peers: List['PeerAgent']): self.name = name self.peers = peers self.messages = [] async def broadcast(self, message: str): """Send message to all peers.""" for peer in self.peers: await peer.receive(self.name, message) async def receive(self, sender: str, message: str): """Receive message from peer.""" self.messages.append({ "from": sender, "content": message, "timestamp": time.time() }) ``` ## Memory Systems ### Short-term Memory (Working Context) ```python class WorkingMemory: def __init__(self, max_items: int = 5): self.items = [] self.max_items = max_items def add(self, item: dict): """Add item, removing oldest if at capacity.""" self.items.append(item) if len(self.items) > self.max_items: self.items.pop(0) def get_context(self) -> str: """Format for inclusion in prompt.""" return "\n".join([ f"- {item['key']}: {item['value']}" for item in self.items ]) ``` ### Long-term Memory (Retrieval) ```python import chromadb from typing import List, Dict class LongTermMemory: def __init__(self): self.client = chromadb.Client() self.collection = self.client.create_collection("agent_memory") def store(self, content: str, metadata: dict = None): """Store information for later retrieval.""" self.collection.add( documents=[content], metadatas=[metadata or {}], ids=[str(hash(content))] ) def recall(self, query: str, n_results: int = 3) -> List[Dict]: """Retrieve relevant memories.""" results = self.collection.query( query_texts=[query], n_results=n_results ) return [ { "content": doc, "metadata": meta } for doc, meta in zip(results['documents'][0], results['metadatas'][0]) ] ``` ### Graph-based Memory ```python import networkx as nx class GraphMemory: def __init__(self): self.graph = nx.DiGraph() def add_entity(self, entity: str, properties: dict): """Add or update entity node.""" self.graph.add_node(entity, **properties) def add_relation(self, from_entity: str, to_entity: str, relation: str): """Add relationship between entities.""" self.graph.add_edge(from_entity, to_entity, relation=relation) def get_neighbors(self, entity: str, max_depth: int = 2) -> dict: """Get connected entities within depth.""" if entity not in self.graph: return {} # BFS to find neighbors neighbors = {} for node in nx.single_source_shortest_path_length( self.graph, entity, cutoff=max_depth ): neighbors[node] = self.graph.nodes[node] return neighbors ``` ## Tool Design Principles ### Minimal Interface ```python from typing import Dict, Any def search_documentation(query: str, max_results: int = 5) -> list[Dict[str, Any]]: """Search documentation with minimal parameters. Args: query: Search query string max_results: Maximum number of results to return (default: 5) Returns: List of matching documentation sections with title and content Example: results = search_documentation("authentication") """ # Implementation pass ``` ### Clear Output Format ```python def analyze_code(code: str) -> dict: """Analyze code and return structured results. Returns: { "issues": [{"line": int, "severity": str, "message": str}], "metrics": {"complexity": int, "lines": int}, "suggestions": [str] } """ return { "issues": [ {"line": 15, "severity": "warning", "message": "Unused variable 'x'"} ], "metrics": { "complexity": 7, "lines": 42 }, "suggestions": [ "Consider extracting this logic into a separate function" ] } ``` ### Context Offloading ```python import json from pathlib import Path def analyze_large_dataset(data_path: str, output_dir: str = ".agent_context") -> str: """Analyze data and write detailed results to file. Returns reference to results file instead of full data in context. """ # Create context directory Path(output_dir).mkdir(exist_ok=True) # Analyze data results = perform_analysis(data_path) # Write detailed results to file results_file = f"{output_dir}/analysis_results.json" with open(results_file, 'w') as f: json.dump(results, f, indent=2) # Return only summary in context summary = { "total_records": results["count"], "key_findings": results["top_insights"][:3], "full_results": results_file } return f"Analysis complete. Summary: {summary}\nFull results in {results_file}" ``` ## Filesystem-based Context Management ### Dynamic Discovery ```python from pathlib import Path import yaml def discover_tools(tools_dir: str = ".agent_tools") -> dict: """Dynamically discover available tools from filesystem.""" tools = {} for tool_file in Path(tools_dir).glob("*.yaml"): with open(tool_file) as f: tool_spec = yaml.safe_load(f) tools[tool_spec["name"]] = tool_spec return tools # Tool definition file: .agent_tools/github_search.yaml """ name: github_search description: Search GitHub repositories parameters: - name: query type: string required: true - name: language type: string required: false """ ``` ### Plan Persistence ```python import json from datetime import datetime class PlanTracker: def __init__(self, plan_file: str = ".agent_context/current_plan.json"): self.plan_file = plan_file def save_plan(self, steps: list):
Ver en GitHub
Este SKILL.md es muy grande, por eso SkillsMP muestra aqui solo la primera seccion. Ver en GitHub