About
Tools for building tools
README
Mnemotek
Describe an agentic command once. Derive its CLI, MCP tool, skill manifest, and slash command from that single contract.
CI Docs Release npm GitHub Packages node TypeScript license
Live demo & documentation — one inspect contract rendered as CLI, MCP, SKILL, and COMMAND output
What it does
Mnemotek takes one literal JSON Schema command contract and derives every surface an agentic tool needs from it, so the CLI flags, the MCP tool schema, the agent skill manifest, and the slash command definition can never drift out of sync with each other.
flowchart LR
A["Literal JSON Schema\ncommand contract"] --> B(("Mnemotek\nregistry"))
B --> C["CLI\nCommander + Enquirer"]
B --> D["MCP tool"]
B --> E["Agent SKILL.md\nmanifest"]
B --> F["Slash command"]
style A fill:#3178c6,color:#fff,stroke:none
style B fill:#2ea44f,color:#fff,stroke:none
style C fill:#1f2937,color:#fff,stroke:none
style D fill:#1f2937,color:#fff,stroke:none
style E fill:#1f2937,color:#fff,stroke:none
style F fill:#1f2937,color:#fff,stroke:none
- One source of truth. The schema is authored as a literal object (
as const satisfies JSONSchema) — no builder API, no separate type definitions to keep in sync. - Typed for free. json-schema-to-ts derives TypeScript types directly from the schema at compile time.
- Validated at the boundary. AJV validates every command payload at runtime through
@studnicky/json'sSchemaValidator. - Configuration cascade. Values resolve through schema defaults → package config → JSON config → environment → CLI, in that order.
Usage
import { Mnemotek } from '@studnicky/mnemotek';
import { mnemotekContract } from '@studnicky/mnemotek/entities';
const app = new Mnemotek({
name: 'project-tool',
description: 'Project automation for humans and agents.'
});
app.command({
name: 'inspect',
description: 'Inspect the current project.',
schema: {
type: 'object',
additionalProperties: true
}
});
const isCommandName = mnemotekContract.CommandNameEntity.validate('inspect');
console.log(app.manifest());
Install
npm install @studnicky/mnemotek
The package also publishes to GitHub Packages:
echo '@studnicky:registry=https://npm.pkg.github.com' >> .npmrc
npm install @studnicky/mnemotek
Entity schemas, types, and validators are exported separately:
import { mnemotekContract } from '@studnicky/mnemotek/entities';
Packages
This repo is a pnpm workspace. The root @studnicky/mnemotek is the library; everything under packages/* is a small standalone CLI/MCP/skill tool built on it — each one just defines its commands as a Mnemotek manifest and gets a CLI, MCP adapter, and skill manifest for free. No package here depends on a graph database, an agent-orchestration proxy, or a live external API — each shells out only to tools already on a normal dev machine (git, gh, the target project's own tsc/eslint).
| Package | What it does |
|---|---|
| @studnicky/memoria | Agent-native dotfile manager: templated apply, drift status, seed-once files, dry-run verify, remote bootstrap, and a bundled snippet catalog |
| @studnicky/git-flow | Feature/release/hotfix/cleanup branch orchestration, Conventional Commits validation, branch-derived commit type suggestion, WIP checkpoint commits |
| @studnicky/git-hooks | Installs a core.hooksPath dispatcher plus bundled protected-branch, large-file, and secret-scan pre-commit checks |
| @studnicky/git-stack | Thin passthrough to the gh-stack stacked-PR GitHub CLI extension |
| @studnicky/github-release | Create a GitHub release via gh release create, with auto-generated or explicit notes |
| @studnicky/labels-sync | Pull/push GitHub repository labels against a tracked JSON file, add-only and dry-run by default |
| @studnicky/redactor | Strip ANSI/spinner noise from command output, track byte/token savings |
| @studnicky/config-standards | Check/fix .gitignore, package.json, .editorconfig, .vscode config, Prettier config, version pins, and more against a small built-in standards set |
| @studnicky/deps-audit | Static import-graph analysis: circular imports, orphan modules, unused dependencies |
| @studnicky/inspect | Run a project's own tsc/eslint and report structured pass/fail results |
Development
pnpm install
pnpm run ci # root package first — its test script builds dist/, which packages/* depend on
pnpm -r run ci # then every package under packages/* (pnpm -r excludes the workspace root by design)
The Pages social preview is generated from the canonical transparent logo and the package version:
pnpm run generate:og
Release, publish, and documentation workflows run this generator automatically so the preview stays version-stamped. The local generator requires rsvg-convert from librsvg.
License
MIT — see LICENSE.
Changelog
See CHANGELOG.md and the GitHub releases.
Installing Mnemotek
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/Studnicky/mnemotekFAQ
Is Mnemotek MCP free?
Yes, Mnemotek MCP is free — one-click install via Unyly at no cost.
Does Mnemotek need an API key?
No, Mnemotek runs without API keys or environment variables.
Is Mnemotek hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Mnemotek in Claude Desktop, Claude Code or Cursor?
Open Mnemotek on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Mnemotek with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
