Coding agents can now inspect repositories, write tests, configure CI, migrate frameworks, and fix bugs.
But the workflows we give them are often surprisingly informal.
We copy prompts from old conversations, internal documents, GitHub issues, or random text files. Then we modify those prompts for the current project and hope we did not remove an important instruction.
That made me wonder:
What if a coding-agent task could be installed, inspected, versioned, and executed like a package?
I built Clawx to explore that idea.
What is Clawx?
Clawx is an open-source package manager for reusable coding-agent tasks.
A package is a Markdown file with YAML metadata.
The Markdown contains the instructions for the coding agent. The metadata describes information such as:
- The package name and version
- Required parameters
- Environment variables
- Dependencies
- Requested tools
- Supported agent providers
A basic workflow looks like this:
clawx search gitignore
clawx info gitignore-gen
clawx run gitignore-gen
Before running the task, Clawx lets the user inspect what the package contains and which capabilities it may require.
After execution, the run is recorded:
clawx history
The goal is to make agent workflows easier to discover, review, reuse, and audit.
The problem with reusable prompts
Saving useful prompts is already a good practice.
But a text file containing a prompt usually does not answer questions such as:
- Which version am I running?
- Has the content changed?
- Which tools could the agent use?
- Which inputs are required?
- Does another task need to run first?
- What was executed last time?
- Can another developer reproduce this workflow?
A prompt often contains the task, but not the operational structure around the task.
Clawx treats agent instructions as versioned artifacts rather than disposable chat messages.
What does a package look like?
A simplified Clawx package could look like this:
---
name: repo-health-check
version: 1.0.0
description: "Analyze a repository and create a health report"
allowed_tools:
- read
- grep
- bash
parameters:
- name: output
default: PROJECT_HEALTH.md
---
Inspect the current repository.
Identify:
- The primary language and framework
- The available build and test commands
- Existing CI configuration
- Missing documentation
- Dependency concerns
- Obvious maintainability problems
Do not modify source files.
Write the final report to {{ output }} and summarize the most
important findings for the user.
The package remains readable without Clawx.
That was an important design decision.
I did not want the core behavior to be hidden inside a complicated binary format or configuration language. A developer should be able to review the package in a normal Git diff.
How execution works
When a user runs a package, Clawx performs several steps.
1. Resolve the package
Clawx finds the package in a configured registry.
A registry can be backed by a Git repository or an HTTP service.
2. Verify its contents
The downloaded package is compared with its expected SHA-256 checksum.
This can detect unexpected changes between the registry metadata and the retrieved package.
However, a checksum does not prove that a package is safe.
It only proves that the downloaded content matches the expected content.
3. Show the execution request
Before starting the agent, Clawx can show details such as:
- Package name
- Version
- Parameters
- Environment requirements
- Requested tools
- Selected agent provider
The user can review this information before approving execution.
4. Invoke the coding agent
The Markdown instructions are passed to a supported coding-agent CLI.
Clawx is designed to work with multiple providers, including tools such as:
- Claude Code
- Codex
- Gemini CLI
- OpenCode
- Antigravity
5. Record the result
Clawx keeps an execution history so the user can inspect previous runs.
Why not use a shell script?
Shell scripts are better for deterministic automation.
For example, when the correct process is always:
npm install
npm test
npm run build
there is usually no reason to involve an agent.
Agent-driven packages become more useful when the task depends on repository context.
Consider this request:
Inspect this repository, determine its language and build system, configure an appropriate CI workflow, run the available checks, and explain your decisions.
A deterministic script would need to anticipate many possible frameworks, layouts, package managers, and test systems.
A coding agent can inspect the repository and adapt.
Clawx is not intended to replace shell scripts, Makefiles, Ansible, Terraform, or CI systems.
It explores a different category:
Reusable tasks where interpretation and project context are important.
Why support multiple agents?
I did not want a useful task to become permanently tied to one provider.
A package for auditing a Dockerfile or configuring CI should ideally remain useful when a team changes its preferred coding agent.
However, provider independence has limits.
Different agents behave differently. They have different:
- Permission models
- Tool names
- Sandboxing capabilities
- Context limits
- Output formats
- Non-interactive modes
- Error-handling behavior
Clawx can normalize the package format and invocation process.
It cannot guarantee identical results across every agent.
Security is the hardest part
Any tool that downloads instructions and passes them to an agent deserves careful scrutiny.
Clawx currently provides mechanisms such as:
- Human-readable packages
- SHA-256 verification
- Approval before execution
- Declared tool requirements
- Execution history
- Integration with provider permission systems
But these mechanisms do not make an untrusted package safe.
There is also an important limitation around tool enforcement.
With some providers, Clawx can enforce restrictions at the subprocess boundary. With others, the declared tool list may primarily serve as information during approval, while enforcement depends on the provider’s own sandbox and permission system.
The current project should not be treated as a complete security boundary.
Some of the longer-term questions include:
- Should packages be cryptographically signed?
- How should publisher identity work?
- Can permissions be capability-based?
- How should registries review packages?
- Can agent execution ever be reproducible?
- How should users evaluate package trust?
- What should happen when a package changes behavior?
These questions are not secondary details. They are central to the idea.
What kinds of packages could be useful?
Here are a few examples.
Repository health check
Inspect a project and create a report covering:
- Tests
- CI
- Documentation
- Dependencies
- Security
- Maintainability
GitHub Actions setup
Detect the language and build tools, then create an appropriate CI workflow.
Dockerfile audit
Review:
- Image size
- Layer caching
- User permissions
- Dependency installation
- Security practices
Open-source release preparation
Check whether a project has:
- A license
- Contribution guidelines
- Release notes
- A changelog
- Issue templates
- Security documentation
Framework migration
Inspect an existing project, create a migration plan, apply changes incrementally, and validate the result.
These tasks are difficult to turn into universal scripts because each repository is different.
What I learned while building Clawx
Human-readable formats matter
Using Markdown keeps the package easy to inspect.
The metadata provides structure, but the actual task remains understandable to a developer reviewing the file.
A checksum is not a trust system
Verifying content integrity is useful.
It does not answer whether the content should be trusted.
Those are separate problems.
Approval is part of the product
For agent tools, the interface before execution matters just as much as the execution itself.
A good approval screen should help users understand:
- What is being run
- What information is required
- What tools may be used
- What could change in the repository
Good packages need narrow outcomes
A package that says:
Improve this repository.
is too vague.
A stronger package defines:
- A specific outcome
- Explicit constraints
- Validation steps
- Expected files
- Failure behavior
- A useful final summary
The package should encode expertise, not just contain a one-line prompt.
Provider independence is mostly about managing differences
Calling several CLIs is not the hardest part.
The difficult part is acknowledging that each provider offers different capabilities and guarantees.
A useful abstraction should expose those differences rather than hide them.
What Clawx is not
Clawx is not:
- A replacement for deterministic automation
- A guarantee that downloaded instructions are safe
- A fully reproducible build system
- A universal sandbox
- A reason to stop reviewing generated changes
- A registry that users should blindly trust
It is an early experiment in packaging reusable coding-agent tasks.
Trying it
On macOS or Linux:
curl -fsSL https://raw.githubusercontent.com/debarshibasak/clawx/master/install.sh | sh
You will also need a supported coding-agent CLI installed and authenticated.
Then try:
clawx list
clawx info gitignore-gen
clawx run gitignore-gen
clawx history
I recommend testing agent-driven tools inside a disposable repository and reviewing every proposed change before committing it.
I would like your feedback
Clawx is still early, and I am looking for technical criticism.
In particular:
- Are coding-agent tasks useful as packages?
- When is a script clearly the better abstraction?
- What should an approval screen show?
- How should package permissions work?
- Should packages be provider-independent?
- How could a public registry establish trust?
- Which tasks would you actually install?
You can find the project here:
🔗 github.com/debarshibasak/clawx
Issues, package ideas, security feedback, and pull requests are welcome.
I would especially like to hear where the concept feels unnecessary, confusing, or unsafe.
Top comments (0)