Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
c11669c
refactor: trim project to prompts-only deliverable
ryderstorm Nov 17, 2025
567d4c0
feat(docs): add local playbook site with Liatrio brand styling
ryderstorm Nov 17, 2025
6a1e57b
feat(docs): add developer experience, common questions, and video ove…
ryderstorm Nov 17, 2025
0a471c9
feat(docs): add reference materials page with 9 SDD workflow examples
ryderstorm Nov 17, 2025
efedd7d
fix(docs): update validation dates to 2025-11-07 and remove unused in…
ryderstorm Nov 17, 2025
69361d7
feat(docs): add navigation header to all reference pages
ryderstorm Nov 17, 2025
6b6830a
fix(docs): add missing subtasks to tasks-pre-commit-cspell HTML page
ryderstorm Nov 17, 2025
0641868
fix(docs): improve inline code styling in task list subtasks
ryderstorm Nov 17, 2025
683cb9e
docs: add comprehensive audit report and fix minor issues
ryderstorm Nov 17, 2025
a446fc2
refactor: extract navigation and footer into reusable JS components
ryderstorm Nov 17, 2025
175fc99
style(playbook-site): align design with dev.liatrio.com brand standards
ryderstorm Nov 17, 2025
c858e0a
feat(playbook-site): enhance design and add comparison page
ryderstorm Nov 17, 2025
f76f988
fix(playbook-site): address code review feedback for security and acc…
ryderstorm Nov 17, 2025
2ecec55
chore: remove more obsolete files
ryderstorm Nov 17, 2025
f70e401
refactor(docs): move playbook site to docs root and embed fonts
ryderstorm Nov 17, 2025
93d40f8
style(docs): add hero divider to reduce empty space on reference-mate…
ryderstorm Nov 17, 2025
38cd750
chore(repo): add CODEOWNERS and Code of Conduct, enhance pre-commit h…
ryderstorm Nov 17, 2025
892f2e6
chore(docs): remove temporary files and update comparison page
ryderstorm Nov 17, 2025
33daa1a
fix: update install instructions
ryderstorm Nov 17, 2025
80f4188
docs: update README with comprehensive SDD workflow documentation
ryderstorm Nov 17, 2025
1e08b78
fix(security): update gitleaks to v8.29.0
ryderstorm Nov 17, 2025
907aa51
refactor(docs): extract embedded fonts to dedicated stylesheet
ryderstorm Nov 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @liatrio-labs/liatrio-labs-maintainers
84 changes: 16 additions & 68 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,86 +1,34 @@
name: Run tests and linting
name: CI - Tests and Linting

on:
# Avoid duplicate runs: run on PRs for branches, and on direct pushes to main
# but ignore changes to pyproject.toml, CHANGELOG.md, and uv.lock
# This is to avoid running tests and linting for commits that only relate to releases
# Ignore changes to CHANGELOG.md (auto-generated by semantic-release)
push:
branches: ["main"]
paths-ignore:
- "pyproject.toml"
- "CHANGELOG.md"
- "uv.lock"
pull_request:
paths-ignore:
- "CHANGELOG.md"
workflow_dispatch:

jobs:
test:
name: Test (uv + pytest)
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python: ["3.12"]
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install uv (with cache)
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: |
**/pyproject.toml
**/uv.lock

- name: Install Python
run: uv python install ${{ matrix.python }}

- name: Sync dependencies (frozen)
run: uv sync --all-groups --frozen

- name: Run tests with coverage
run: uv run pytest -vv --cov=mcp_server --cov=slash_commands --cov-report=term-missing:skip-covered --cov-report=xml


- name: Upload coverage.xml artifact
uses: actions/upload-artifact@v4
with:
name: coverage-xml-${{ matrix.python }}
path: coverage.xml

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: coverage.xml
flags: unittests
fail_ci_if_error: false

lint:
name: Lint (uv + ruff)
name: Run Linting
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
- name: Checkout repository
uses: actions/checkout@v4

- name: Install uv (with cache)
uses: astral-sh/setup-uv@v6
- name: Set up Python
uses: actions/setup-python@v5
with:
enable-cache: true
cache-dependency-glob: |
**/pyproject.toml
**/uv.lock

- name: Install Python
run: uv python install 3.12

- name: Sync dependencies (frozen)
run: uv sync --all-groups --frozen

- name: Run ruff lint
run: uv run ruff check .
python-version: "3.12"

- name: Format (check)
run: uv run ruff format --check .
- name: Install pre-commit
run: pip install pre-commit

- name: Pre-commit (meta checks)
run: uv run pre-commit run --all-files --show-diff-on-failure
- name: Run pre-commit hooks
run: pre-commit run --all-files
29 changes: 23 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
name: Semantic Release

# This workflow runs after CI passes on the main branch.
# It analyzes commits using Conventional Commits and automatically:
# - Bumps the version
# - Generates/updates CHANGELOG.md
# - Creates a GitHub release

on:
workflow_run:
workflows: ["Run tests and linting"]
# Update this to match your CI workflow name (default: "CI - Tests and Linting")
workflows: ["CI - Tests and Linting"]
branches: [main]
types: [completed]

Expand All @@ -16,23 +23,25 @@ jobs:
if: ${{ github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read # Required for actions/checkout
id-token: write # Required for Octo STS
concurrency:
group: semantic-release-${{ github.ref }}
cancel-in-progress: false
steps:
# Chainguard Octo STS authentication (configured at Liatrio org level)
- uses: octo-sts/action@6177b4481c00308b3839969c3eca88c96a91775f # v1.0.0
id: octo-sts
with:
scope: ${{ github.repository }}
identity: main-semantic-release

- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
persist-credentials: false


- name: Get GitHub App User ID
id: get-user-id
run: echo "user-id=$(gh api "/users/octo-sts[bot]" --jq .id)" >> "$GITHUB_OUTPUT"
Expand All @@ -52,7 +61,15 @@ jobs:
# sanity check
git ls-remote --heads origin >/dev/null

- name: Semantic Release
uses: python-semantic-release/python-semantic-release@v10
- name: Set up Python
uses: actions/setup-python@v5
with:
github_token: ${{ steps.octo-sts.outputs.token }}
python-version: "3.12"

- name: Install python-semantic-release
run: pip install "python-semantic-release>=10.0.0,<11.0.0"

- name: Semantic Release
run: semantic-release -c .releaserc.toml version
env:
GH_TOKEN: ${{ steps.octo-sts.outputs.token }}
29 changes: 12 additions & 17 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,12 @@ repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.0
hooks:
- id: ruff-check
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
- id: check-yaml
- id: check-toml
- id: check-added-large-files
Comment on lines +9 to +11

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Large reference HTML exceeds check-added-large-files limit

CI runs pre-commit run --all-files, and the newly added docs/references/1___ai-conversation____add-cspell-precommit-hook-dark.html is ~720 KB. The check-added-large-files hook defaults to a 500 KB threshold, so this hook will fail on every lint run, blocking the lone CI job unless the file is shrunk or the limit is raised.

Useful? React with 👍 / 👎.

exclude: ^docs/references/
- id: end-of-file-fixer
- id: trailing-whitespace

- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.45.0
Expand All @@ -33,12 +30,10 @@ repos:
args:
- "--extends=@commitlint/config-conventional"

- repo: local
- repo: https://github.com/gitleaks/gitleaks
rev: v8.29.0
hooks:
- id: run-tests
name: Run pytest before push
entry: uv run pytest
language: system
stages: [pre-push]
pass_filenames: false
always_run: true
- id: gitleaks
name: scan for committed secrets with gitleaks
args:
- "--redact"
1 change: 0 additions & 1 deletion .python-version

This file was deleted.

24 changes: 24 additions & 0 deletions .releaserc.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
[semantic_release]
# Use annotated tags like v1.2.3
tag_format = "v{version}"
# Allow 0.x.x versions (required for pre-1.0.0 releases)
allow_zero_version = true
# Don't update version in any files since this is a markdown-only repo
# Version is tracked via git tags only
version_variables = []
# Generate changelog and commit version bumps
assets = []

[semantic_release.changelog]
# Generate CHANGELOG.md in Markdown
[semantic_release.changelog.default_templates]
changelog_file = "CHANGELOG.md"
output_format = "md"

[semantic_release.branches]
# Release from the main branch
main = { match = "main" }

[semantic_release.remote]
# Use GitHub token from environment variable
token = { env = "GH_TOKEN" }
77 changes: 77 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement by contacting the Liatrio Maintainers team (`@liatrio-labs/liatrio-labs-maintainers`) or by using GitHub's private reporting form for this repository: <https://github.com/liatrio-labs/spec-driven-workflow/security/advisories/new>. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of actions.

**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1, available at <https://www.contributor-covenant.org/version/2/1/code_of_conduct.html>.

Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).

For answers to common questions about this code of conduct, see the FAQ at <https://www.contributor-covenant.org/faq>. Translations are available at <https://www.contributor-covenant.org/translations>.
Loading
Loading