feat: add agent skills and guardrails functionality
- Introduced new tools for managing agent skills and guardrails, including add, remove, and list operations. - Updated README.md to document new commands and usage patterns for skills and guardrails. - Enhanced server configuration to support longer read and write timeouts. - Increased maximum upload size for files to 100 MB and adjusted related configurations. - Created database migrations for agent skills, guardrails, and their associations with projects. - Updated relevant code files to integrate new skills and guardrails into the application logic.
This commit is contained in:
78
README.md
78
README.md
@@ -47,6 +47,51 @@ A Go MCP server for capturing and retrieving thoughts, memory, and project conte
|
||||
| `backfill_embeddings` | Generate missing embeddings for stored thoughts |
|
||||
| `reparse_thought_metadata` | Re-extract and normalize metadata for stored thoughts |
|
||||
| `retry_failed_metadata` | Retry metadata extraction for thoughts still pending or failed |
|
||||
| `add_skill` | Store a reusable agent skill (behavioural instruction or capability prompt) |
|
||||
| `remove_skill` | Delete an agent skill by id |
|
||||
| `list_skills` | List all agent skills, optionally filtered by tag |
|
||||
| `add_guardrail` | Store a reusable agent guardrail (constraint or safety rule) |
|
||||
| `remove_guardrail` | Delete an agent guardrail by id |
|
||||
| `list_guardrails` | List all agent guardrails, optionally filtered by tag or severity |
|
||||
| `add_project_skill` | Link an agent skill to a project |
|
||||
| `remove_project_skill` | Unlink an agent skill from a project |
|
||||
| `list_project_skills` | List all skills linked to a project |
|
||||
| `add_project_guardrail` | Link an agent guardrail to a project |
|
||||
| `remove_project_guardrail` | Unlink an agent guardrail from a project |
|
||||
| `list_project_guardrails` | List all guardrails linked to a project |
|
||||
|
||||
## Agent Skills and Guardrails
|
||||
|
||||
Skills and guardrails are reusable agent behaviour instructions and constraints that can be attached to projects.
|
||||
|
||||
**At the start of every project session, always call `list_project_skills` and `list_project_guardrails` first.** Use the returned skills and guardrails to guide agent behaviour for that project. Only generate or create new skills/guardrails if none are returned.
|
||||
|
||||
### Skills
|
||||
|
||||
A skill is a reusable behavioural instruction or capability prompt — for example, "always respond in structured markdown" or "break complex tasks into numbered steps before starting".
|
||||
|
||||
```json
|
||||
{ "name": "structured-output", "description": "Enforce markdown output format", "content": "Always structure responses using markdown headers and bullet points.", "tags": ["formatting"] }
|
||||
```
|
||||
|
||||
### Guardrails
|
||||
|
||||
A guardrail is a constraint or safety rule — for example, "never delete files without explicit confirmation" or "do not expose secrets in output".
|
||||
|
||||
```json
|
||||
{ "name": "no-silent-deletes", "description": "Require confirmation before deletes", "content": "Never delete, drop, or truncate data without first confirming with the user.", "severity": "high", "tags": ["safety"] }
|
||||
```
|
||||
|
||||
Severity levels: `low`, `medium`, `high`, `critical`.
|
||||
|
||||
### Project linking
|
||||
|
||||
Link existing skills and guardrails to a project so they are automatically available when that project is active:
|
||||
|
||||
```json
|
||||
{ "project": "my-project", "skill_id": "<uuid>" }
|
||||
{ "project": "my-project", "guardrail_id": "<uuid>" }
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
@@ -169,6 +214,8 @@ List files for a thought or project with:
|
||||
|
||||
AMCS also supports direct authenticated HTTP uploads to `/files` for clients that want to stream file bodies instead of base64-encoding them into an MCP tool call.
|
||||
|
||||
The Go server caps `/files` uploads at 100 MB per request. Large uploads are still also subject to available memory, Postgres limits, and any reverse proxy or load balancer limits in front of AMCS.
|
||||
|
||||
Multipart upload:
|
||||
|
||||
```bash
|
||||
@@ -262,6 +309,37 @@ Or add directly to `opencode.json` / `~/.config/opencode/config.json`:
|
||||
}
|
||||
```
|
||||
|
||||
## Apache Proxy
|
||||
|
||||
If AMCS is deployed behind Apache HTTP Server, configure the proxy explicitly for larger uploads and longer-running requests.
|
||||
|
||||
Example virtual host settings for the current AMCS defaults:
|
||||
|
||||
```apache
|
||||
<VirtualHost *:443>
|
||||
ServerName amcs.example.com
|
||||
|
||||
ProxyPreserveHost On
|
||||
LimitRequestBody 104857600
|
||||
RequestReadTimeout handshake=0 header=20-40,MinRate=500 body=600,MinRate=500
|
||||
Timeout 600
|
||||
ProxyTimeout 600
|
||||
|
||||
ProxyPass /mcp http://127.0.0.1:8080/mcp connectiontimeout=30 timeout=600
|
||||
ProxyPassReverse /mcp http://127.0.0.1:8080/mcp
|
||||
|
||||
ProxyPass /files http://127.0.0.1:8080/files connectiontimeout=30 timeout=600
|
||||
ProxyPassReverse /files http://127.0.0.1:8080/files
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
Recommended Apache settings:
|
||||
|
||||
- `LimitRequestBody 104857600` matches AMCS's 100 MB `/files` upload cap.
|
||||
- `RequestReadTimeout ... body=600` gives clients up to 10 minutes to send larger request bodies.
|
||||
- `ProxyTimeout 600` and `ProxyPass ... timeout=600` give Apache enough time to wait for the Go backend.
|
||||
- If another proxy or load balancer sits in front of Apache, align its size and timeout settings too.
|
||||
|
||||
## Development
|
||||
|
||||
Run the SQL migrations against a local database with:
|
||||
|
||||
Reference in New Issue
Block a user