Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
6ee52a5
Bump version to 0.2.0-dev
briandominick Jan 2, 2026
da81987
chore: Style cleanup in MCP docs
briandominick Jan 3, 2026
4932aa3
feat: Comprehensive template overhaul with styling system
briandominick Mar 1, 2026
6d50b66
fix: read conversions.note and fix note_pattern regex (#28)
briandominick Jan 28, 2026
a76d40a
fix: support /pattern/flags format in YAML regex patterns (#32)
briandominick Jan 28, 2026
c8033e5
feat: add release documentation system (dog-fooding rhx) (#30)
briandominick Jan 28, 2026
3b45fff
fix: prioritize file path argument over API fetch (#33)
briandominick Jan 30, 2026
f805381
fix: simplify AsciiDoc/Markdown templates (#36)
briandominick Jan 30, 2026
7d30fae
fix: align all docs URLs under /docs/ path (#27)
briandominick Jan 30, 2026
491083d
Pre-release cleanup
briandominick Jan 30, 2026
9a97cda
docs: fix missing entry in 0.1.2 release notes
briandominick Jan 30, 2026
abc15b2
chore: Upgrade README attributes to cross-repo standards
briandominick Mar 2, 2026
7513e1f
chore: Updates to key files based on docopslab-dev changes
briandominick May 9, 2026
49da437
Merge branch 'main' into dev/0.2; update gems
briandominick May 9, 2026
d2ce619
Wire releasehx to schemagraphy gem; remove embedded modules (resolves…
briandominick May 13, 2026
82f4021
chore: configure docopslab-dev linting paths and extensions
briandominick May 13, 2026
5db2a61
chore: update Gemfile.lock for schemagraphy path dep and Bundler 4 ch…
briandominick May 13, 2026
11581f0
Wire releasehx to asciisourcerer gem; remove embedded sourcerer (reso…
briandominick May 13, 2026
79a9c51
refactor: route template/data path resolution to Rake layer
briandominick May 14, 2026
f8a58e0
fix: Ruby linting, Tempfile GC race, gemspec dep ordering
briandominick May 14, 2026
8b2fe8b
fix: revert adf_to_markdown keyword rename; suppress RuboCop inline
briandominick May 14, 2026
c889d4a
chore: Cleanup gemfiles
briandominick May 14, 2026
28e8b72
fix: Prevent payload extraction when custom mapping is provided
briandominick May 20, 2026
6bf7e49
chore: Remove extraneous docs and add Markdown converter to prebuild
briandominick May 21, 2026
778eb95
chore: Update dependencies
briandominick May 25, 2026
e80eb98
refactor: Reorganize Rake tasks to verb:target namespace convention
briandominick May 25, 2026
62c2a65
fix: Establish proper Liquid error detection and indentation for RHYM…
briandominick May 26, 2026
957a6e2
chore: Adjust dogfooding config for proper issue detection, conversion
briandominick May 26, 2026
4140901
chore: Changes necessary for publishing release histories
briandominick May 27, 2026
5e5002d
chore: RuboCop autocorrections
briandominick May 27, 2026
79eefbe
docs: Remove references to internal SchemaGraphy, Sourcerer references
briandominick May 27, 2026
7997081
chore: Remove asciisourcerer path dep; lock to published 0.4.0 via do…
briandominick May 27, 2026
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
408 changes: 408 additions & 0 deletions .agent/team/frontend-dev-styles.adoc

Large diffs are not rendered by default.

22 changes: 16 additions & 6 deletions .config/docopslab-dev.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
source:
repo: DocOps/lab
ref: v1
root: gems/docopslab-dev/config-packs

attributes:
product_version:
Expand All @@ -10,9 +9,6 @@ attributes:
object: this_prod_vrsn

docs:
- source: docs/agent/AGENTS.md
target: AGENTS.md
synced: false
- source: docs/agent/skills/*.md
target: .agent/docs/skills/
synced: true
Expand All @@ -24,7 +20,16 @@ docs:
synced: true
- source: docs/agent/missions/*.md
target: .agent/docs/missions/
synced: true
synced: true

templates:
manifest:
- source: templates/AGENTS.markdown
target: AGENTS.md
- source: templates/gitignore
target: .gitignore
- source: templates/README.asciidoc
target: README.adoc

tools:
- tool: rubocop
Expand All @@ -45,12 +50,17 @@ tools:
target: .config/vale.local.ini
synced: false
paths:
lint: ['.']
skip:
- build/*
- specs/*
- "**/config-reference.adoc"
- docs/releases.adoc
- docs/release/*
- .bundle/*
- .agent/*
- docs/manpage.adoc
exts: ['adoc']

- tool: htmlproofer
enabled: true # Disabled by default, enable per project
Expand All @@ -75,4 +85,4 @@ tools:
synced: true
- source: actionlint/project.yml
target: .config/actionlint.yml
synced: false
synced: false
8 changes: 4 additions & 4 deletions .config/releasehx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ conversions:
note: issue_body
note_pattern: |
/^(((#|=)+ (Draft )?Release Note.*?)|(<!-- (draft )?release note -->))\n+(?<note>(.|)+)/gmi
markup: markdown

rhyml:
pasterize_summ: true
pasterize_head: true
chid: "{{ release.code | replace: '.', '_' | upcase }}-{{ change.tick }}"
empty_notes: skip
empty_notes: empty
markup: asciidoc

parts:
label_prefix: "component:"
Expand Down Expand Up @@ -97,8 +97,8 @@ types:

tags:
# Include all tags by default for 0.1.2 (no filtering)
# _include: ['highlight', 'changelog', 'breaking', 'deprecation', 'experimental']
# _exclude: ['internal', 'wontfix', 'duplicate', 'invalid']
_include: ['needs:note', 'highlight', 'changelog', 'breaking', 'deprecation', 'experimental']
_exclude: ['internal', 'wontfix', 'duplicate', 'invalid']

highlight:
head: Highlights
Expand Down
2 changes: 1 addition & 1 deletion .config/rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Metrics/ParameterLists:

# RSpec cops - More lenient for integration tests
RSpec/ExampleLength:
Max: 25
Max: 35

RSpec/MultipleExpectations:
Max: 5
Expand Down
21 changes: 13 additions & 8 deletions .config/shellcheckrc
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
# ShellCheck configuration for DocOps Lab projects
# This file is synced from docopslab-dev gem

# Disable some overly strict rules for our use cases
disable=SC2034 # Variable appears unused (common in sourced scripts)
disable=SC2086 # Double quote to prevent globbing (sometimes we want globbing)
disable=SC2181 # Check exit code directly with e.g. 'if mycmd;', not indirectly with $?

# Set default shell to bash (most of our scripts are bash)
# tag::core-rules[]
# Set default shell to bash
shell=bash

# Enable additional optional checks
# Enforce documented style rules
enable=require-double-brackets # Require [[ ]] over [ ] in Bash
enable=deprecate-which # Use command -v instead of which
enable=add-default-case # Require a fallthrough *) in case statements

# Quote safety
enable=quote-safe-variables
enable=require-variable-braces

# NOTE: SC2034 (variable appears unused) is NOT disabled globally.
# In sourced library files that export variables for callers, suppress inline:
# # shellcheck disable=SC2034 # exported; read by callers
# end::core-rules[]
4 changes: 2 additions & 2 deletions .config/sourcerer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ regions:
tag: ai-prompt
out: releasehx-ai-prompt.adoc
render:
- template: lib/schemagraphy/templates/cfgyml/config-reference.adoc.liquid
- template: gem://schemagraphy/lib/schemagraphy/cfgyml/templates/config-reference.adoc.liquid
data: specs/data/config-def.yml
key: config_def
attrs: README.adoc
out: build/docs/config-reference.adoc
name: config-reference
- template: lib/schemagraphy/templates/cfgyml/sample-config.yaml.liquid
- template: gem://schemagraphy/lib/schemagraphy/cfgyml/templates/sample-config.yaml.liquid
data: specs/data/config-def.yml
key: config_def
attrs: README.adoc
Expand Down
6 changes: 0 additions & 6 deletions .github/copilot-instructions.md

This file was deleted.

8 changes: 4 additions & 4 deletions .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@ name: CI/CD Pipeline

on:
push:
branches: [ main, develop ]
branches: [main, develop]
pull_request:
release:
types: [ published ]
types: [published]

jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
matrix:
ruby-version: ['3.2', '3.3']
ruby-version: ["3.2", "3.3"]
steps:
- uses: actions/checkout@v4

Expand All @@ -37,7 +37,7 @@ jobs:
run: bundle exec rake rspec

- name: CLI sanity checks
run: bundle exec rake cli_test
run: bundle exec rake test:cli

# gem-build and docker-build jobs disabled for manual release process
# These will be re-enabled when standardized release automation is implemented across repos
8 changes: 4 additions & 4 deletions .github/workflows/docs-qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Documentation Quality Check

on:
push:
branches: [ main, develop ]
branches: [main, develop]
pull_request:
branches: [ main, develop ]
branches: [main, develop]
workflow_dispatch:

jobs:
Expand Down Expand Up @@ -35,7 +35,7 @@ jobs:
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2'
ruby-version: "3.2"
bundler-cache: false

- name: Generate prebuild artifacts
Expand All @@ -49,7 +49,7 @@ jobs:

- name: Build docs
run: |
bundle exec rake docs
bundle exec rake build:docs

- name: Archive built site
if: always()
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Pages

on:
push:
branches: [ main ]
branches: [main]
workflow_dispatch:

permissions:
Expand All @@ -24,7 +24,7 @@ jobs:
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
ruby-version: "3.3"
bundler-cache: false

- name: Generate prebuild artifacts
Expand All @@ -37,7 +37,7 @@ jobs:
run: bundle install --jobs 4

- name: Build docs
run: bundle exec rake docs
run: bundle exec rake build:docs

- name: Add .nojekyll to output (prevent Pages from reprocessing)
run: |
Expand Down
5 changes: 2 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@ tmp/
*.bak
*~
.warp/
.agent/*
!.agent/team/
.agents/
.agent/

# Logs
*.log
Expand Down Expand Up @@ -84,3 +82,4 @@ releasehx-demo/
# Release history working directories
docs/release/drafts/
docs/release/payloads/
docs/agent/*.md
73 changes: 63 additions & 10 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ Table of Contents:
- Remember

<!-- tag::universal-agency[] -->

## AI Agency

As an LLM-backed agent, your primary mission is to assist a human OPerator in the development, documentation, and maintenance of ReleaseHx by following best practices outlined in this document.
As an LLM-backed agent, your primary mission is to assist a human Operator in the development, documentation, and maintenance of ReleaseHx by following best practices outlined in this document.

### Philosophy: Documentation-First, Junior/Senior Contributor Mindset

Expand All @@ -31,22 +32,45 @@ In particular, you values:

### Operations Notes

**IMPORTANT**:
This document is augmented by additional agent-oriented files at `.agent/docs/`.
Be sure to `tree .agent/docs/` and explore the available documentation:
#### Tools

You need not have access to specific MCP or other *tools* like SKILLS or TEAMS or anything non-standard/semi-proprietary, to perform all of the operations that such interfaces enable.
Make use of the available resources and prompt the Operator to carry out any actions that require tools you cannot access.

When available, use MCP tools or CLIs to accomplish tasks, with REST/GraphQL APIs as a distant third preference.
For instance, the GitHub MCP server for managing GitHub Issues and Pull Requests, or else the `gh` CLI tool, rather than having the user carry out mundane tasks via the Web UI.
But unless you are working on the GitHub REST API itself, **do not** use the GitHub API to carry out tasks that can be done with MCP or CLI.

#### Local Agent Documentation

This document is augmented by additional agent-oriented files at `.agent/docs/`, with full-file overlays at `_docs/agent/`.

Use the following command to generate a current skim index as JSON.

```
bundle exec rake 'labdev:skim:md[.agent/docs/:_docs/agent/,flat,json]' > .agent/docs/skim.json
```

- **skills/**: Specific techniques for upstream tools (Git, Ruby, AsciiDoc, GitHub Issues, testing, etc.)
- **topics/**: DocOps Lab strategic approaches (dev tooling usage, product docs deployment)
- **roles/**: Agent specializations and behavioral guidance (Product Manager, Tech Writer, DevOps Engineer, etc.)
- **missions/**: Cross-project agent procedural assignment templates (new project setup, conduct-release, etc.)

**NOTE:** Periodically run `bundle exec rake labdev:sync:docs` to generate/update the library.
> **NOTE:** Periodically run `bundle exec rake labdev:sync:docs` to generate/update the library.

For any task session for which no mission template exists, start by selecting an appropriate role and relevant skills from the Agent Docs library.

**Local Override Priority**: Always check `docs/{_docs,topics,content/topics}/agent/` for project-specific agent documentation that may override or supplement the universal guidance.
#### 3rd Party Docs Discovery / Access Patterns

When you need to find third-party documentation on the Web, follow these suggestions:

### Ephemeral/Scratch Directory
1. Check for `llms.txt` first (ex: https://example.com/llms.txt).
2. Try appending `.md` to documentation URLs for Markdown versions.
3. Avoid JavaScript-heavy or rate-limited documentation sites, check the GitHub repo for docs sources.
- Check for `/docs`, `/examples`, or `/manual` directories in GitHub repos.
- Use raw.githubusercontent.com URLs when browsing Markdown or AsciiDoc docs sources.

#### Ephemeral/Scratch Directories

There should always be an untracked `.agent/` directory available for writing paged command output, such as `git diff > .agent/tmp/current.diff && cat .agent/tmp/current.diff`.
Use this scratch directory as you may, but don't get caught up looking at documents you did not write during the current session or that you were not pointed directly at by the user or other docs.
Expand All @@ -55,10 +79,36 @@ Typical subdirectories include:

- `docs/`: Generated agent documentation library (skills, roles, topics, missions)
- `tmp/`: Scratch files for current session
- `logs/`: Persistent logs across sessions (e.g., task run history)
- `reports/`: Persistent reports across sessions (e.g., spellcheck reports)
- `logs/`: Persistent logs across sessions (ex: task run history)
- `reports/`: Persistent reports across sessions (ex: spellcheck reports)
- `team/`: Shared (Git-tracked) files for multi-agent/multi-operator collaboration

#### Teamwork and Collaboration

When working with other agents or human operators, be collaborative and communicative:

- Share your thought process and reasoning when proposing solutions.
- Ask for feedback and input from others, especially on complex or risky changes.
- Be open to suggestions and alternative approaches.
- Track actual work:
- Use each codebase's Git repository.
- Maintain a document like `.agent/tmp/refactor-session-notes.md` or `agent/team/refactor-session-notes.md`.

#### Inter-agent Delegation

When you lack inter-agent delegation tools (*sub-agents*, *background agents*, etc), communicate with your Operator about how to spin up additional agents or chats, and exchange content through the shared/tracked `.agent/team/` path.

- Delegate tasks or even projects to other agents when appropriate:
- If you identify a task that would require upgrading with roles/skills not needed for your current work.
- If the task is too much of an aside and would clutter your context window with content that is superfluous or potentially confusing to your current work.
- Use the `.agent/team/` directory to share files and information with other agents or human collaborators.
- IMYML files for issue tracking
- Markdown or AsciiDoc files or other formats as needed for conveying info and updates
- Use a project- or epic-based file or sub-folder naming system (`refactor-issues.imyml.yml`. `refactor-plan.adoc`, `refactor-updates.md`).
- Frequently check the `.agent/team/` directory for updates from others that may be relevant to your work.
- Check modification timestamps or Git commit logs to determine what to consume.
- Avoid consuming outdated or unrelated content.

### AsciiDoc, not Markdown

DocOps Lab is an **AsciiDoc** shop.
Expand Down Expand Up @@ -147,17 +197,19 @@ API/File → JSON → RHYML → Templates → Output (MD/AsciiDoc/HTML/PDF)

<!-- tag::universal-config[] -->


- **Default values:** Defined in `specs/data/config-def.yml`
- **User overrides:** Via `.releasehx.yml` or `--config` flag
- **Defined in lib/releasehx/configuration.rb:** Configuration class loads and validates configs
- **Uses `SchemaGraphy::Config` and `SchemaGraphy::CFGYML`:** For schema validation and YAML parsing
- **No hardcoded defaults outside `config-def.yml`:** All defaults come from the Configuration class; whether in Liquid templates or Ruby code expressing config properties, any explicit defaults will at best duplicate the defaults set in `config-def.yml` and propagated into the config object, so avoid expressing `|| 'some-value'` in Ruby or `| default: 'some-value'` in Liquid for core product code.
- **No hard-coded defaults outside `config-def.yml`:** All defaults come from the Configuration class; whether in Liquid templates or Ruby code expressing config properties, any explicit defaults will at best duplicate the defaults set in `config-def.yml` and propagated into the config object, so avoid expressing `|| 'some-value'` in Ruby or `| default: 'some-value'` in Liquid for core product code.

<!-- end::universal-config[] -->


<!-- tag::universal-approach -->


## Agent Development Approach

**Before starting development work:**
Expand Down Expand Up @@ -237,6 +289,7 @@ bundle exec rhx 1.1.0 --config configs/jira-customfield.yml --api-data _payloads

<!-- tag::universal-responsibilities[] -->


## General Agent Responsibilities

1. **Question Requirements:** Ask clarifying questions about specifications.
Expand Down
Loading
Loading