Skip to main content

Convert roadmaps to GitHub issues

Project description

Gitscaffold – Roadmaps to GitHub Issues

Gitscaffold is a command-line tool and GitHub Action that converts structured roadmap files (YAML/JSON) into GitHub issues and milestones.

Installation:

pip install gitscaffold

CLI Usage

As an installed package

After installing, the gitscaffold command is available:

# Create GitHub issues from a roadmap file
gitscaffold create ROADMAP.yml --repo owner/repo --token $GITHUB_TOKEN

# Validate without creating issues (dry run)
gitscaffold create ROADMAP.yml --repo owner/repo --token $GITHUB_TOKEN --dry-run

Initialize a roadmap template

# Generate an example roadmap file
gitscaffold init example-roadmap.yml

From the source checkout

You can also clone this repository and use the top-level gitscaffold.py script for additional commands:

# Setup GitHub labels, milestones, and (optionally) a project board
./gitscaffold.py setup owner/repo --phase phase-1 --create-project

# Delete all closed issues in a repository
./gitscaffold.py delete-closed owner/repo
# Use GraphQL API for deletion
./gitscaffold.py delete-closed owner/repo --api
# Enrich a single issue or batch enrich via LLM
./gitscaffold.py enrich owner/repo --issue 123 --path ROADMAP.md --apply
./gitscaffold.py enrich owner/repo --batch --path ROADMAP.md --csv output.csv --interactive
# Initialize a new roadmap YAML template
./gitscaffold.py init ROADMAP.yml

For detailed documentation and examples, see the project repository or run:

gitscaffold --help

GitHub Action Usage

Use Gitscaffold as a GitHub Action in your workflow (e.g., .github/workflows/sync-roadmap.yml):

name: Sync Roadmap to Issues
on:
  workflow_dispatch:
jobs:
  scaffold:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run Scaffold
        uses: your-org/gitscaffold-action@v0.1.0
        with:
          roadmap-file: roadmap.yml
          repo: ${{ github.repository }}
          github-token: ${{ secrets.GITHUB_TOKEN }}
          dry-run: 'false'

Releasing

Publishing to PyPI

  1. Bump the version in pyproject.toml under the [project] table.

  2. Commit and tag the release:

    git add pyproject.toml
    git commit -m "Release vX.Y.Z"
    git tag vX.Y.Z
    
  3. Build distribution packages:

    pip install --upgrade build twine
    python -m build
    
  4. Upload to PyPI:

    twine upload dist/*
    
  5. Push commits and tags:

    git push origin main --tags
    

Automating releases with GitHub Actions

Add a workflow file (e.g., .github/workflows/release.yml) to publish on tag push:

name: Publish

on:
  push:
    tags:
      - 'v*.*.*'

jobs:
  build-and-publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - run: pip install --upgrade build twine
      - run: python -m build
      - uses: pypa/gh-action-pypi-publish@v1
        with:
          password: ${{ secrets.PYPI_API_TOKEN }}

Ensure you’ve added a PYPI_API_TOKEN secret in your repository settings.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitscaffold-0.1.1.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitscaffold-0.1.1-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file gitscaffold-0.1.1.tar.gz.

File metadata

  • Download URL: gitscaffold-0.1.1.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.0

File hashes

Hashes for gitscaffold-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b52e42b0b9864fff0b2ed2d85a9243f2b8b730cbf042f6d14dc1cc3a549d1845
MD5 b792aa26143203727f940c933c92f60a
BLAKE2b-256 784b1123c92e14276563a5cd4eaa79b079f576c887756e509f7f697ce65021a2

See more details on using hashes here.

File details

Details for the file gitscaffold-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: gitscaffold-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.0

File hashes

Hashes for gitscaffold-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7303adcc940eec33a171c921c9c58113657319860278e7f48f316dfc8546c361
MD5 1ba622ccf5067698afb399df9756d912
BLAKE2b-256 b55318d22ce147244db116aafb9c8ce8b72ea3014497698c4fffc903cd34e285

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page