jules-specs
A specification generator that wraps GitHub's spec-kit tool to create structured specifications for the jules-planner workflow.
Overview
jules-specs is the first step in a three-stage development workflow:
- jules-specs (this tool) - Generate specifications using GitHub spec-kit
- jules-planner - Generate tasks and implementation plans from specs
- Implementation - Execute the plan with Claude/Jules or other tools
Installation
Prerequisites
-
Install spec-kit (GitHub's specification toolkit):
npm install -g @github/spec-kit
-
Install jules-specs:
pip install jules-specs
Or install from source:
git clone https://github.com/maravedi/jules-specs.git cd jules-specs pip install -e .
Usage
Basic Usage
Generate specs from a prompt:
jules-specs "Build a photo organizer app"
Pipe Input
You can also pipe input:
echo "Build a CMMC-compliant photo organizer app" | jules-specs
Enhanced Mode
Add compliance and security considerations with Jules enhancement:
jules-specs --enhance "Create a REST API for user management"
Options
--enhance- Add Jules compliance critique to specifications--output-dir DIR- Specify output directory (default:.specify/specs)--no-commit- Skip automatic git commit
Workflow
When you run jules-specs, it:
- Extracts the prompt from CLI argument or stdin
- Finds the next spec number (001, 002, 003, etc.)
- Invokes spec-kit CLI:
specify cli spec "prompt" --output .specify/specs/001/ - Generates files:
.specify/specs/001/spec.md- Main specification.specify/specs/001/architecture.md- System design.specify/specs/001/api.md- OpenAPI spec (if applicable)
- Enhances with Jules (if
--enhanceflag used) - Adds compliance critique - Creates git branch:
jules-specs-<hash> - Commits changes to git
- Outputs path for next step
Example Workflow
# Step 1: Generate specifications
jules-specs "Build CMMC-compliant photo organizer app"
# Output: .specify/specs/001/
# Step 2: Generate plan from specs
jules-planner --spec-dir .specify/specs/001/
# Output: tasks + implementation plan
# Step 3: Implement (with Claude, Jules, or manually)
Output Structure
.specify/
└── specs/
├── 001/
│ ├── spec.md
│ ├── architecture.md
│ └── api.md
├── 002/
│ ├── spec.md
│ ├── architecture.md
│ └── api.md
└── ...
Git Integration
jules-specs automatically:
- Creates a new branch
jules-specs-<hash>based on your prompt - Commits the generated specifications
- Prepares the branch for PR creation
To skip git operations:
jules-specs --no-commit "Your prompt here"
GitHub Actions Integration
Jules-specs can be integrated into GitHub workflows for automated spec generation. See docs/GITHUB_INTEGRATION.md for comprehensive documentation.
Quick Start
Method 1: Trigger via Issue Label
- Create an issue with your specification request
- Add the
spec-requestlabel - Specs are auto-generated and a PR is created
Method 2: Trigger via Comment Comment on any issue:
/generate-spec Build a photo organizer app
Method 3: Manual Trigger
- Go to Actions → Generate Specs (Manual)
- Click Run workflow
- Enter your prompt and options
- Click Run workflow
Available Workflows
The repository includes three pre-built workflows:
generate-specs-on-issue.yml- Automatically triggered when an issue gets thespec-requestlabelgenerate-specs-on-comment.yml- Triggered by/generate-speccommand in issue commentsgenerate-specs-manual.yml- Manual trigger via GitHub Actions UI
All workflows:
- Install dependencies (Python, Node.js, spec-kit)
- Generate specifications using jules-specs
- Create a new git branch
- Open a pull request with the results
- Add helpful comments and notifications
Setup
- Copy workflow files to
.github/workflows/in your repository - Configure repository permissions: Settings → Actions → General
- Enable "Read and write permissions"
- Allow "GitHub Actions to create and approve pull requests"
- Create a
spec-requestlabel in your repository (for issue-triggered workflow)
For detailed setup instructions, advanced usage, and troubleshooting, see docs/GITHUB_INTEGRATION.md.
Development
Running from Source
python -m jules_specs "Your prompt"
Testing
# Test basic functionality
jules-specs "Build a simple REST API"
# Test enhanced mode
jules-specs --enhance "Build a secure user authentication system"
# Test without git
jules-specs --no-commit "Build a file processor"
Requirements
- Python >= 3.8
- spec-kit (npm package:
@github/spec-kit) - git (for auto-commit features)
License
MIT
Links
Metadata
Release files for jules-specs 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jules_specs-0.1.0.tar.gz | 6.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jules_specs-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.4 kB
Release files / jules_specs-0.1.0.tar.gz
| Download URL | jules_specs-0.1.0.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
390f10afddadafecc3f89583d93da4a354906e3f5d3969918a71f8e773a4c180
|
|
BLAKE2b-256 checksum How to use checksums |
2209be287f07b8f9ebf90873898f145d3097c1037942ca68659f23eb48dfc1ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 30, 2025.
Transparency logRelease files / jules_specs-0.1.0-py3-none-any.whl
| Download URL | jules_specs-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
314e8f28b87cfc3ab6cb1b85fcda2e530b9fdf91c1dab0714abf1f4e15623034
|
|
BLAKE2b-256 checksum How to use checksums |
f3d2e069ea32711e0b5fee31f7e1047002578db91c05b714e8c9e4d32b491288
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 30, 2025.
Transparency log