Skip to main content

YOUR SKILLS. INSIDE COWORK.

Install once, sync forever. Your business skills live in Cowork. Persistent across sessions, shared across your team, managed from your dashboard.

Install Once. You're Done.

Cowork starts every session fresh. There is no persistent memory between conversations, no shared state across the team, no place that holds your brand voice, your client policies, or your reporting templates. Context dies with the conversation, and the next session begins with the same blank prompt.

The systemprompt.io plugin attaches to Cowork through OAuth2 with PKCE. The validate_pkce path in the authorize endpoint rejects any request without a code_challenge, refuses the plain method, and accepts only S256. There are no API keys to paste and no config files to edit. The WellKnownResponse struct serves OIDC discovery at /.well-known/oauth-authorization-server and /.well-known/openid-configuration, so Cowork resolves every endpoint it needs from the discovery document.

Once attached, the plugin loads your business skills into every Cowork session. The OAuth2 flow covers authorization, token exchange, introspection, revocation, and dynamic client registration, all from the same Rust binary. JWT claims (sub, username, permissions, roles) are validated and discarded. The plugin never stores secrets. Works with Claude Desktop on macOS and Windows on Pro, Max, Team, and Enterprise plans.

  • One-Click Setup — Click install, authorize your account, done. No API keys, no configuration files, no technical knowledge required.
  • OAuth2 + PKCE Connection — validate_pkce rejects plain and accepts only S256. JWT with HS256 signing, plus OIDC discovery for endpoint resolution. Credentials are validated and discarded, never stored in the plugin.
  • Works With Your Claude Plan — Compatible with Claude Pro, Max, Team, and Enterprise. Works on macOS and Windows.

Skills That Remember.

Cowork starts every session fresh, with no memory of previous conversations. That means re-explaining your brand voice, your processes, and your preferences every single time. systemprompt.io fixes this with the Skill model. Each skill carries a unique SkillId, a SourceId linking it to your account, structured instructions, tags for categorisation, and an enabled flag for instant on/off control.

Your business skills persist across every Cowork session. Claude knows your brand voice on Monday and still knows it on Friday. The SkillService loads skills from the database via SkillRepository, emitting a skill_loaded event each time so you can track exactly which skills are active. Marketing guidelines, support policies, reporting templates: always there, always current.

Skills improve over time as you refine them on the dashboard. Each edit syncs instantly through SkillIngestionService. Your AI gets smarter without starting over.

  • Cross-Session Memory — Skills persist across every Cowork session via the Skill model with SkillId and SourceId. No re-explaining your business context. Ever.
  • Always Current — Edit a skill on your dashboard and SkillIngestionService syncs it to the database. Available in your next Cowork session immediately.
  • Improves Over Time — Refine your skills as you learn what works. Tags, categories, and enabled state give you fine-grained control. Your AI assistant gets better every week.

Edit There. Use Here.

Your skills live on the systemprompt.io dashboard and sync to Cowork automatically. The SkillIngestionService scans skill directories, reads each config.yaml via DiskSkillConfig, extracts content from the paired Markdown file, and upserts to the database. Edit a skill in your browser and it is available in Claude within seconds. No manual export. No copy-paste. No version confusion.

The sync is bidirectional. When the guided setup assistant creates new skills inside Cowork, they appear on your dashboard immediately. SkillInjector handles runtime loading. inject_for_tool (L16-L41) merges skill instructions into agent prompts, and inject_with_metadata (L42-L58) returns both content and SkillMetadata (skill_id, name) when the caller needs to track which skills shaped a response. Manage, refine, and share skills from either place.

Team workspaces mean everyone on your team gets the same skills. The PluginConfig manifest defines which skills are included via PluginComponentRef with source, filter, include, and exclude controls. Update a brand voice guide once and every team member's Claude has the latest version.

  • Instant Sync — SkillIngestionService scans directories, parses DiskSkillConfig, and upserts skills. Changes propagate in seconds, not minutes.
  • Bidirectional — Skills created in Cowork appear on your dashboard. At runtime, SkillInjector::inject_for_tool merges skill instructions into the agent prompt before the tool call executes.
  • Team-Wide Updates — PluginComponentRef controls which skills are distributed. Update a skill once and every team member gets the latest version.

Slash Commands for Your Business.

Type / in Cowork and see your business skills as slash commands. /brand-voice activates your brand guidelines. /client-report loads your reporting template. /support-reply applies your customer service policies. Each command maps to a SkillConfig with a unique id, name, description, optional assigned_agents, and mcp_servers for tool-specific binding. Instant access to any skill.

Slash commands work with Cowork's sub-agent coordination. SkillInjector merges skill instructions into the agent prompt via inject_for_tool, so Claude receives both the base prompt and your skill's writing guidance as a single context. Ask it to write a blog post and your brand voice skill activates automatically. Ask it to draft a client report and your reporting template loads. The right skill activates for the right task.

Skills are stored as Markdown with YAML frontmatter (config.yaml plus index.md). The SkillsConfig supports auto_discover mode to scan directories, or explicit per-skill configuration with model_config overrides for AI model routing. Create as many slash commands as your deployment needs.

  • Instant Skill Access — Type / to see all your business skills. Each SkillConfig maps to a slash command with id, name, description, and agent bindings.
  • Automatic Activation — SkillInjector merges skill instructions into agent prompts. Cowork's sub-agents automatically use the right skill for the right task.
  • Unlimited Skills — No artificial limits on slash commands. auto_discover directory scanning loads every skill you create.

Every Skill, Governed.

Skills in Cowork are not free-floating text injections. They pass through the same governance pipeline that protects every AI action in systemprompt.io. The enforce_rbac_from_registry function in the RBAC middleware validates JWT claims, checks OAuth2 scopes against required permissions, and rejects unauthenticated callers before any skill loads. Anonymous users get minimal access. Authenticated users get scoped permissions tied to their role tier.

Plugin Validation. Every plugin (including Cowork) is defined by a PluginConfig manifest with id validation (3 to 50 chars, kebab-case), version control, author metadata, and explicit component references for skills and agents. The validate() method enforces structural integrity before any skill reaches a user. Hook Events. The HookEvent enum (L24-L33) defines ten lifecycle points: PreToolUse, PostToolUse, PostToolUseFailure, SessionStart, SessionEnd, UserPromptSubmit, Notification, Stop, SubagentStart, and SubagentStop. Each fires synchronously at execution time, so a security team can hold or cancel a tool call before it runs.

The MCP server registry validates port conflicts, OAuth configurations, and server types at startup via validate_registry. Skills flow through this governed infrastructure whether they are activated by a slash command, loaded by a sub-agent, or triggered by an automated workflow. No ungoverned skill execution. No side channels.

  • RBAC on Every Skill Load — enforce_rbac_from_registry validates JWT, checks scopes, and enforces authentication. Six permission tiers from Admin to Anonymous control who can use which skills.
  • Plugin Manifest Validation — PluginConfig enforces id format (kebab-case, 3-50 chars), version, author, and component references. Skills and agents validated before distribution.
  • 10 Lifecycle Hooks — HookEvent enum: PreToolUse, PostToolUse, PostToolUseFailure, SessionStart, SessionEnd, UserPromptSubmit, Notification, Stop, SubagentStart, SubagentStop. Synchronous enforcement, configured via YAML.

Founder-led. Self-service first.

No sales team. No demo theatre. The template is free to evaluate — if it solves your problem, we talk.

Who we are

One founder, one binary, full IP ownership. Every line of Rust, every governance rule, every MCP integration — written in-house. Two years of building AI governance infrastructure from first principles. No venture capital dictating roadmap. No advisory board approving features.

How to engage

Ready to build?

Get started with systemprompt.io in minutes.