Thesis: System prompts are doing much of the heavy lifting in differentiating name-brand LLM performance from open weight self-hosted models. This project aspires to be a community-owned framework that can be injected into any workflow or client to improve the performance of any model.
A modular system prompt composition framework that intelligently generates system prompts for AI assistants based on available tools, task complexity, and contextual information.
- Python:
pip install system-prompt-composer - Node.js:
npm install system-prompt-composer(native bindings - no Python required!)
import system_prompt_composer
import json
request = {
"user_prompt": "Help me analyze this code",
"mcp_config": {"mcpServers": {...}},
"session_state": {"tool_call_count": 0}
}
response = system_prompt_composer.compose_system_prompt(json.dumps(request))
result = json.loads(response)
print(result["system_prompt"])const { composeSystemPrompt } = require('system-prompt-composer');
const request = {
user_prompt: "Help me analyze this code",
mcp_config: { mcpServers: {...} },
session_state: { tool_call_count: 0 }
};
const response = await composeSystemPrompt(request);
console.log(response.system_prompt);π For detailed Node.js documentation, see node/README.md
prompt-composer/
βββ core/ # Rust core implementation
β βββ lib.rs # Main library with NAPI bindings
β βββ types.rs # Type definitions
β βββ composition.rs # Prompt composition logic
β βββ ...
βββ python/ # Python package (PyO3 bindings)
βββ node/ # Node.js package (native NAPI-RS bindings)
β βββ package.json
β βββ index.js # Native bindings wrapper
β βββ index.d.ts # TypeScript definitions
βββ prompts/ # Modular prompt library
β βββ domains/ # Domain-specific prompts
β βββ behaviors/ # Behavioral guidance prompts
βββ README.md # This file
- π§ Intelligent prompts that adapt to available MCP tools
- π Automatic task planning for complex requests
- π― Context-aware guidance for different domains (programming, analysis, filesystem, etc.)
- π Progress monitoring for multi-step workflows
- π Modular design with composable prompt components
- β‘ High performance with Rust core
- π Multi-language support (Python, Node.js)
pip install system-prompt-composernpm install system-prompt-composerThe Node.js package now uses native Rust bindings via NAPI-RS, eliminating the Python dependency!
Generate an intelligent system prompt based on available tools and context.
Parameters:
request.user_prompt(string): The user's requestrequest.mcp_config(object): MCP server configuration withmcpServersrequest.session_state(object): Current session state includingtool_call_countrequest.domain_hints(array, optional): Domain hints like["programming", "analysis"]request.task_complexity(string, optional):"Simple","Complex", or"Auto"
Returns:
{
system_prompt: "Generated prompt text...",
source: "native",
version: "1.1.0",
// ... additional metadata
}Returns system status and configuration information including available domains and behaviors.
Always returns true for native bindings.
The system-prompt-composer supports tool-specific instruction files to improve how LLMs use MCP tools.
When you call composeSystemPrompt() with MCP server configurations, the system automatically looks for corresponding instruction files in prompts/tools/ and includes them in the generated system prompt.
prompts/
βββ behaviors/ # General AI behaviors
βββ domains/ # Domain-specific knowledge
βββ tools/ # NEW: Tool-specific instructions
β βββ desktop-commander.md
β βββ weather-service.md
β βββ [your-mcp-server-name].md
βββ server_patterns.toml
Create a markdown file named after your MCP server:
# My Custom Tool Instructions
You have access to my-custom-tool with these capabilities:
- Function 1: description and best practices
- Function 2: common usage patterns
## Best Practices
- Specific guidance for effective tool usage
- Error handling approaches
- Performance considerationsTool instructions are automatically included and tracked:
{
system_prompt: "...",
applied_modules: [
"planning",
"tool:desktop-commander", // Tool instructions included
"tool:weather-service"
],
recognized_tools: [...],
complexity_assessment: "simple"
}The getStatus() function now also returns available tools:
{
available: true,
domains: ["analysis", "filesystem", "programming"],
behaviors: ["planning", "progress", "reasoning"],
tools: ["desktop-commander", "weather-service"], // NEW
version: "1.0.3"
}- Better Tool Usage: LLMs get specific guidance for each tool
- Developer Control: Customize instructions for your MCP tools
- Automatic Integration: Just add markdown files - no code changes
- Graceful Fallback: Missing tool files are safely ignored
Native Node.js Architecture (NEW):
Node.js β NAPI-RS β Rust Core
Python Architecture:
Python β PyO3 β Rust Core
Key Benefits of Native Bindings:
- β No Python dependency for Node.js users
- β Native performance - direct Rust execution
- β
Simple deployment - just
npm install - β Better error handling
- β Cross-platform binary distribution
- β Smaller bundle size
cd node/
npm install
npm run build # Build release binaries
npm run build:debug # Build debug binaries
npm test # Run testscd python/
pip install -e .cargo build --release
cargo test
cargo build --features nodejs # For Node.js bindings
cargo build --features python # For Python bindingscd node/
npm run build # Build native binaries
npm publish --access publiccd python/
pip install build twine
python -m build
twine upload dist/*Contributions welcome! The project uses:
- Rust for the core prompt composition engine
- NAPI-RS for Node.js native bindings
- PyO3 for Python bindings
- Modular prompts in the
prompts/directory
MIT License - see LICENSE file for details.