Specification generator using GitHub spec-kit, preparing inputs for jules-planner
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jules_specs-0.1.0.tar.gz.
File metadata
- Download URL: jules_specs-0.1.0.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
390f10afddadafecc3f89583d93da4a354906e3f5d3969918a71f8e773a4c180
|
|
| MD5 |
7fec3f34df878686e927885b72a1c6dd
|
|
| BLAKE2b-256 |
2209be287f07b8f9ebf90873898f145d3097c1037942ca68659f23eb48dfc1ef
|
Provenance
The following attestation bundles were made for jules_specs-0.1.0.tar.gz:
Publisher:
publish.yml on maravedi/jules-specs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jules_specs-0.1.0.tar.gz -
Subject digest:
390f10afddadafecc3f89583d93da4a354906e3f5d3969918a71f8e773a4c180 - Sigstore transparency entry: 731812184
- Sigstore integration time:
-
Permalink:
maravedi/jules-specs@3b6e60829078ed27d7fcd911b9573c34078f5c9e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/maravedi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3b6e60829078ed27d7fcd911b9573c34078f5c9e -
Trigger Event:
release
-
Statement type:
File details
Details for the file jules_specs-0.1.0-py3-none-any.whl.
File metadata
- Download URL: jules_specs-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
314e8f28b87cfc3ab6cb1b85fcda2e530b9fdf91c1dab0714abf1f4e15623034
|
|
| MD5 |
c64d36d75eab5262b3d1fcc0f6cf89dc
|
|
| BLAKE2b-256 |
f3d2e069ea32711e0b5fee31f7e1047002578db91c05b714e8c9e4d32b491288
|
Provenance
The following attestation bundles were made for jules_specs-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on maravedi/jules-specs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jules_specs-0.1.0-py3-none-any.whl -
Subject digest:
314e8f28b87cfc3ab6cb1b85fcda2e530b9fdf91c1dab0714abf1f4e15623034 - Sigstore transparency entry: 731812187
- Sigstore integration time:
-
Permalink:
maravedi/jules-specs@3b6e60829078ed27d7fcd911b9573c34078f5c9e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/maravedi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3b6e60829078ed27d7fcd911b9573c34078f5c9e -
Trigger Event:
release
-
Statement type: