ase
AGENTS.md66 starsChanged 50 days agoApache-2.0View on GitHub
Agentic Software Engineering (ASE) is the opinionated companion tooling of Dr. Ralf S. Engelschall for combining Agentic AI Coding with Software Engineering in tools like Anthropic Claude Code CLI. ASE consists of an agent tool plugin (hooks, skills, sub-agents, meta files), a Command-Line Interface (CLI) tool, and a per-project background service bridged into the agent tool as a Model-Context-Protocol (MCP) server. The primary target agent tool is Anthropic Claude Code CLI; GitHub Copilot CLI and OpenAI Codex CLI are secondary…
In this repository2 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- helloSkill
The file
Files
About
Agentic Software Engineering (ASE) is the opinionated companion tooling of Dr. Ralf S. Engelschall for combining Agentic AI Coding with Software Engineering in tools like Anthropic Claude Code CLI. ASE consists of an agent tool plugin (hooks, skills, sub-agents, meta files), a Command-Line Interface (CLI) tool, and a per-project background service bridged into the agent tool as a Model-Context-Protocol (MCP) server.
The primary target agent tool is Anthropic Claude Code CLI; GitHub
Copilot CLI and OpenAI Codex CLI are secondary targets, selected via
ASE_TOOL=copilot resp. ASE_TOOL=codex or the --tool CLI option.
Repository Layout
ASE ships three deliverables from one repository:
plugin/: the agent tool pluginplugin/skills/ase-xxx-xxx/: the 60 skills, each with aSKILL.md(agent instructions) and ahelp.md(Unix-style manual page), plus optional skill-specific files (likease-help-intent/data.md, the concatenation of allhelp.mdfiles, generated at build-time, orase-help-skill/catalog.md, the grouped catalog of all skills); thehelp.mdfiles document only the user-facing skill surface (purpose, options, arguments, and usage examples), not the internals of the skills (the workflow steps ofSKILL.md, the leveraged sub-agents, meta files, and MCP tools, and their interplay), so consult theSKILL.mdand its referenced files for the latter and never add implementation details to thehelp.mdfilesplugin/agents/: the sub-agent definitions leveraged by the skillsplugin/meta/: the shared meta files, exposed to skills viaase util meta <name>: the constitution, tenets, persona, dialog, control flow, getopt, and skill output conventions (ase-{constitution,tenets,persona,dialog,control,getopt,skill}.md), the common steps shared by groups of skills (ase-common-*.md), and the artifact formats (ase-format-{meta,task,spec}.md), where the specification formatase-format-spec.mdincludes the SpecBook models and formats descriptionase-format-specbook.mdand the standard SpecBook schema configurationase-format-specbook.yaml, both generated at build-time by SpecBook (@rse/specbook)plugin/hooks/: the per-agent-tool hook wiring (hooks.json,hooks-copilot.json,hooks-codex.json)plugin/output-styles/: the output stylease-terseplugin/mods/: the Claude Code function hooks module ("mod"), type-checked against the downloadedclaude-code.d.ts:ase-mods.tsfor the hooking infrastructure (the only module loaded by the engine, registering the hooks, dispatching them into the other modules, and binding the engine services for them),ase-mods-common.tsfor the shared parts (Markdown table rows, styled characters, Markdown conversion, wrapping, framing, and the contract, keys, geometry, and drawing of the master/detail view in the band above the prompt),ase-mods-task-grill.tsfor re-rendering the grilling tables of ASE,ase-mods-meta-evaluate.tsfor re-rendering the decision matrices ofase-meta-evaluate(with the best alternative in blue and the criteria rows sortable by clicking the header cells),ase-mods-help-find.tsfor the intent help (a prompt, other than a skill command, suffixed with a blank and!!matched against the help of all skills, with the proposed commands in the band above the prompt, and closed by!!again),ase-mods-help-compose.tsfor the synopsis form (a skill command, bare or with its typed options and arguments, suffixed with!!composed resp. edited through a form of its SYNOPSIS in the band above the prompt, and applied by!!again),ase-mods-help-show.tsfor the manual band (a skill command, bare or with its typed options and arguments, suffixed with a blank and//toggling the entire manual page of the skill in the band above the prompt, while the command is typed on, until the synopsis form opens),ase-mods-help-browse.tsfor the manpage browser (a prompt of just//, or of a free text suffixed with a blank and//, browsing the manual pages of all skills, filtered by a fuzzy search initially of the free text, in the band above the prompt, with RETURN taking over the command of the selected skill), andase-mods-help-hint.tsfor the hint band (a prompt starting with a skill command showing the entire argument hint of the skill, wrapped over multiple lines, in the band above the prompt, instead of the truncated one-line argument hint of Claude Code, which is dropped for the skills), andase-mods-task-edit.tsfor the task band (the task ofase-task-edit --interactive, signaled through a tool registered by the module, rendered in the band above the prompt and following all changes of the task, with the last change shown as a unified diff with line numbers (removed by a##at the prompt), until a next step of the skill is submitted)plugin/.claude-plugin/,plugin/.codex-plugin/,plugin/.github/plugin/: the per-agent-tool plugin manifests
tool/: the@rse/aseCLItool/src/ase.ts: the entry point, wiring all top-level commandstool/src/ase-<command>.ts: one module per CLI command resp. command group:setup,config,alias,service,mcp,hook,statusline,task,task-board,agent,artifact,spec,man,util, andutil-{meta,diagram,worktree,mint,metric,compat}tool/src/ase-alias-core.ts: the skill command aliases ofase alias(loading, merging, and modifying the alias files of the user and the project, resolving the full aliases, and synchronizing their shim skills), applied by the option parserservice-getoptand the session start hooktool/src/ase-lib-*.ts: the generic library modules (lib-log,lib-stdio,lib-table,lib-ignore,lib-version,lib-hash,lib-fetchfor the HTTP requests through anundicidispatcher,lib-daemon-clifor the start/status/log/stop CLI commands of all background processes (servers, agents, and the agent fleet), andlib-server-cliandlib-server-bindfor the CLI commands and the HTTP binding of the task store and agent relay servers)tool/src/ase-setup-*.ts: the parts ofase setup(setup-commonfor the shared types and sub-process runner,setup-mcpfor the MCP server registry, andsetup-settingsfor the statusline and output style settings)tool/src/ase-man-*.ts: the parts ofase man(man-catalogfor the catalog of the manual pages of all commands and skills,man-renderfor their Markdown rendering, including the Shiki syntax highlighting of the code blocks, andman-tuifor the interactive, full-screen manual page browser)tool/src/ase-config-*.ts: the parts ofase config(config-scopefor the scope chain and directory resolution,config-schemafor the schema, presets, and write policies, andconfig-corefor the layeredConfigclass and the internal session state)tool/src/ase-service-*.ts: the MCP-only tool modules of the service (service-{kv,getopt,markdown,skills,sleep,state,timestamp}) and its AI usage accounting (service-otelfor the OTLP ingress, the usage windows of the task assignments, and their bookings onto the usage attachments of the tasks)tool/src/ase-spec-worker.ts: the worker thread entry point, running the SpecBook lint and export of the MCP toolsase_specbook_{lint,export}off the event loop of the servicetool/src/ase-task-*.ts: the task functionality, wherease-task.tsitself only forwards thease taskCLI andase_task_*MCP tools to the task store selected byproject.task.store.url, through the local or remote task store clients oftask-store-client(seedocs/task-api.md):task-formatfor the textual task format codec and the lifecycle models, andtask-requestfor the codec of the agent requests attached to tasks, like the edit requests of the task boards- the task store:
task-store-server-clifor thease task storeCLI wrapper,task-store-corefor the transport-agnostic REST API functionality,task-store-server-bindfor its HTTP and WebSocket binding,task-store-plugin-apifor the storage plugin contract,task-store-plugin-delegatefor the plugin loader and the locking storage delegate, the built-in storage pluginstask-store-plugin-{ase,github,gitlab,gitea}(file-based resp. GitHub, GitLab, and Gitea Issues), andtask-store-issuesfor the common parts of all issue tracker storage plugins - the task board:
task-boardfor thease task boardCLI command,task-board-{core,graph,flow,filter,stats,diff}for its model (whereflowis the agent graph along the lifecycle model, anddiffthe diff of the last change of a task plan),task-board-tui(split intotask-board-tui-{model,control,view,popup,style}) for the terminal UI, andtask-board-web-serverfor the browser UI, served by the service, with its client inase-task-board-web-client.{html,ts,vue,styl}, a Vue application bundled by Vite, whose root component is split into the modulestask-board-web-client-{model,editor,control}(shared state and service access, task plan editor, and actions and key dispatching) and the componentstask-board-web-client-{lanes,graph,flow,agents,stats,dialog,popup,title}
tool/src/ase-agent-*.ts: the parts ofase agent:agent-runtimefor the runtime base of all agents,agent-runtime-toolfor the headless agent tool invocation and the decoding of its output,agent-runtime-execfor the processes, temporary directories, jobs, and Git operations,agent-runtime-claimfor the run locks and task claims of the crash recovery,agent-runtime-{phase,request}for the runtime bases of the phase resp. request agents, andagent-runtime-enginefor the engine running every agent of a definition (its phase and request agents) and its facades: the built-in agents, the agents of the definition kinds, and theadhocagentagent-definition-apifor the public, self-contained types of the agent definitions and their hooks (exported as the types of the@rse/asepackage),agent-definition-corefor the definition model (options, YAML, TypeScript, JavaScript, and built-in definition loading, discovery of the definition kinds, hooks, validation, and templates), and the directorytool/src/ase-agent-definition-builtin/with the files{rebooter,condenser,implementer,qualifier,integrator,editor,estimator,researcher}.tsfor the declarative definitions of the modes of the built-in agentsagent-processfor thease agent <kind> start|status|log|stopcommands of a single agent, andagent-fleetfor thease agent fleetsupervisor of multiple agents and the agent relay- the agent relay, selected by
project.relay.urland passing the live presence of the agents to the task boards:agent-relay-server-clifor thease agent relayCLI wrapper,agent-relay-corefor the transport-agnostic in-memory presence,agent-relay-server-bindfor its HTTP and WebSocket binding (mountable into the task store server), andagent-relay-clientfor the relay URL resolution, the client, and the presence reporter of the agents
tool/bin/ase: the published shim, loading compiled output fromdst/tool/man/ase{,-xxx{,-yyy}}.md: the Unix manual pages of all CLI commands (one per command and command group, where the pages of a group with third-level commands likease task storecover them), in the remark-man Markdown format, copied at build-time intodst/man/*.md(shown byase man); they document only the user-facing CLI surface (commands, options, arguments, configuration, and files), not the internals oftool/src/(modules, classes, functions, types, and their interplay), so consult the source code for the latter and never add implementation details to the manual pagestool/plugin/andtool/.claude-plugin/: build-time copies ofplugin/and.claude-plugin/-- never edit them, they are regenerated
pages/: the GitHub Pages site (https://ase.tools), an Astro projectpages/src/pages/: the pages of the site (index.astro,author,design,highlights,news,project,setup,usage,workflows,typing-demo, andusecases/[usecase]), all based onpages/src/layouts/BaseLayout.astropages/src/components/*.astro: the page sections (Section-*), modals (Modal-*), widgets (Widget-*), and client-side features (Feature-*)pages/src/styles/theme.css: the global stylesheet (Tailwind CSS, fonts, and theme) of the sitepages/src/data/*.ts: the content data, especiallyskills.ts(the single source of truth for skill grouping and ordering, mirrored by the skill groups oftool/src/ase-man-catalog.ts, so keep both in sync),manpages.ts(the CLI command tree, read at build-time fromtool/man/*.md),news.ts(the release news, read at build-time fromNEWS.md),terminology.ts(the term definitions, imported at build-time from the siblingterminology.md), andcomparison.ts,fit.ts,methods.ts,nav.ts,previews.ts,site.ts,testimonials.ts,usecases.ts, andusps.ts
Additionally, the repository root carries docs/ (hand-written
documentation and diagram sources), etc/ (the top-level stx.conf and the
version bumping script version.mts), CHANGELOG.md (the detailed
change log, also the source of the GitHub release notes), NEWS.md (the
user-facing release news, also rendered by pages/),
.claude-plugin/marketplace.json and .github/plugin/marketplace.json
(the plugin marketplace manifests), .github/workflows/static.yml (the
GitHub Pages deployment of pages/), and bin/ase (resp. bin/ase.bat
on Windows, both delegating to bin/ase.js), a development shim which
builds tool/ on demand and runs it with ASE_SETUP_DEV=1.
Build System
Build orchestration uses @rse/stx, not plain npm scripts. In every
directory the only npm script is npm start, which invokes stx with the
local etc/stx.conf.
The top-level targets in the repository root fan out into all three deliverables:
npm start lint # lint plugin, tool, and pages
npm start build # build plugin, tool, and pages
npm start upd # update all package.json dependency versions
npm start tokei # show project statistics
npm start clean # remove regularly built files
npm start distclean # also remove node_modules and package-lock.json
npm start publish # lint, bump version, build, commit, tag, push, npm publish, GitHub release
npm start publish-minor # same as "publish", but bumping the minor instead of the release version
npm start publish-major # same as "publish", but bumping the major instead of the release versionThe per-deliverable targets are:
cd plugin
npm start lint # markdownlint-cli2 + eslint over meta/, skills/, agents/,
# and output-styles/, tsc over mods/, and "claude plugin validate"
npm start build # lint, then regenerate skills/ase-help-intent/data.md
# and meta/ase-format-specbook.{md,yaml}
npm start fetch-types # force re-download of mods/claude-code.d.ts
cd tool
npm start lint # eslint over src/ + vue-tsc type-check of the web board client
npm start build # lint + build-cmd + build-man + build-plugin
npm start build-cmd # tsc of the program and its public types + vite build
# of the web board client (emits into dst/)
npm start build-man # copy of man/*.md into dst/man/*.md
npm start build-plugin # copy ../plugin and ../.claude-plugin into the package
npm start build-container # build and push the multi-arch container image (etc/ase.dockerfile)
npm start build-watch # nodemon rebuild on src/**/*.{ts,vue,styl,html}
npm start lint-watch # nodemon relint on src/**/*.{ts,vue}
cd pages
npm start lint # astro check + eslint over src/**/*.{ts,astro}
npm start build # lint, then astro build (emits into dst/)
npm start dev # astro dev
npm start preview # astro preview
npm start typing-demo # re-record the typing demo GIF via PlaywrightEach of plugin, tool, and pages additionally provides clean and
distclean. No test target is defined anywhere.
Setup
ase setup install # install tool and plugin
ase setup update # update tool and plugin
ase setup uninstall # uninstall tool and plugin
ase setup enable # enable plugin (without uninstalling)
ase setup disable # disable plugin (without uninstalling)
ase setup status # report plugin, MCP server, output style, function hooks, statusline, and telemetry registrations
ase setup mcp list # list pre-defined foreign MCP servers
ase setup mcp activate # activate foreign MCP servers (keys in ASE_MCP_KEY_<ID>)
ase setup mcp deactivate # deactivate foreign MCP servers
ase setup statusline activate # activate ASE statusline
ase setup statusline deactivate # deactivate ASE statusline
ase setup telemetry activate # activate OTLP export towards ASE
ase setup telemetry deactivate # deactivate OTLP export towards ASEAll ase setup sub-commands -- except ase setup mcp list -- accept
--tool claude|copilot|codex (default: claude, or $ASE_TOOL; the
statusline is unsupported for codex) and, for claude only,
--scope user|project|local (default: user, except for update,
uninstall, enable, and disable, which auto-detect the scope of the
existing plugin installation). The exceptions are ase setup status,
which reports all scopes at once, and ase setup telemetry
activate|deactivate, which always writes user-level configuration, and
hence both take no --scope. Additionally, install, update, and
uninstall accept --dev (default: $ASE_SETUP_DEV) to use the local
working copy instead of the remote or bundled repository, and update
accepts --force to update even if already at the latest version.
CLI Commands
Beyond ase setup, the CLI provides:
ase config: the layereduser<project<task<sessionconfigurationase alias: the skill command aliases of the user and the project: full aliases (provided as generated shim skills), option aliases, and option defaults of the skills, applied by the option parserase_getopt(which also accepts the negation--no-xof every option--x)ase service: the per-project background HTTP servicease mcp: the stdio-to-service MCP bridgease hook: the agent tool hook handlersase statusline: the statusline rendererase task: the persisted task plans, includingase task boardfor the interactive task board in terminal and browser, andase task storefor the task store serverase agent: the autonomous agents, each running in its own process, managed individually viaase agent <kind> start|status|log|stop(e.g.ase agent implementer start -p 2):- the task lifecycle agents
implementer,qualifier, andintegrator, which together drive theenterprisetask lifecycle model headless from the planned to the integrated tasks - the planning agents
rebooterandcondenser, which re-create resp. condense the plans of theDRAFTEDtasks of theenterpriselifecycle model explicitly assigned to them (DRAFTED>PLANNING>DRAFTED, unassigned afterwards) - the
editoragent, which processes the prompt-driven edit requests of the task boards in any lifecycle model - the
estimatoragent, which estimates the effort (theEffort:key) of the tasks without a valid one in any lifecycle model (modephase, intended for the final estimation), resp. of the tasks of theestimaterequests of the task boards in any unfinished status (moderequest, intended for dry-runs) - the
researcheragent, which researches the plans of theDRAFTEDtasks of theenterpriselifecycle model explicitly assigned to it (modephase, intended for researching and grounding the plan content), resp. processes theresearchrequests of the task boards in any lifecycle model (moderequest, intended for topic-driven research), appending a research report (Web research plus source artifact grounding) to theresearchattachment of the tasks and refining their plans - the agents of the definition kinds, whose entire behavior is
configured by a definition file
<kind>.{yaml,yml,ts,mts,js,mjs,cjs}of the project (.ase/agents/) or of the user (agents/of the user configuration directory), where a definition kind replaces a built-in kind of the same name, resp. by the options of theadhocagent (with example definitions intool/man/ase-agent-adhoc.md); the built-in agents are themselves declarative definitions run by the same agent engine ase agent relay: the per-user agent relay server, passing the live presence of the agents to the task boardsase agent fleet start|status|log|stop: a fleet of agents (and of the relay) of a YAML configuration (initially created viaase agent fleet init), run through a supervising process, restarting every exited member with an exponential backoff
- the task lifecycle agents
ase artifact: the artifact kind resolutionase spec: the SpecBook specification initializing, linting, exporting, and previewingase man: the interactive browser of the manual pages oftool/man/and of the skills shipped with the tool (plain text outside a terminal)ase util: the utility commandsase util meta(plugin meta file output),ase util diagram(Mermaid rendering),ase util worktree(ASE worktree path resolution),ase util mint(hash-derived identifier minting),ase util metric(text length metrics), andase util compat(probe values for thease-meta-compatself-test skill)
See the manual pages tool/man/*.md (e.g. ase man ase) for the full details.
Code Style
Strict TypeScript conventions are enforced in tool/src/: no semicolons
(except inside for), double quotes, K&R braces, no braces around
single-statement if/while blocks, vertically-aligned operators
on similar consecutive lines, /* ... */ block comments with two
leading/trailing spaces, parens around all arrow parameters, and line
breaks before else/catch/finally. Match existing formatting
exactly when editing.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

