Skip to content

Commit 4d3e911

Browse files
committed
2 parents 1591361 + d7e7366 commit 4d3e911

6 files changed

Lines changed: 1084 additions & 34 deletions

File tree

README.md

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,27 @@ A sample family of reusable [GitHub Agentic Workflows](https://github.github.com
44

55
## 📂 Available Workflows
66

7-
### Triage Workflows
7+
### Maintainer Workflows
88

9-
- [🏷️ Issue Triage](docs/issue-triage.md) - Triage issues and pull requests
10-
- [🌳 Issue Arborist](docs/issue-arborist.md) - Automatically organize issues by linking related issues as parent-child sub-issues
9+
Make software maintenance enjoyable! From basic issue triage to Repo Assist - a powerful triage multi-task backlog burner, issue labeller, bug fixer and general repository assistant. Other workflows help gate your repository.
10+
11+
- [🏷️ Issue Triage](docs/issue-triage.md) - Triage labelling of issues and pull requests and not much more
12+
- [🤖 Repo Assist](docs/repo-assist.md) - A regular, pervasive all-tools repository assistant that triages issues, investigates issues, replies with comments, fixes bugs, proposes engineering improvements, and maintains activity summaries
13+
- [🛡️ AI Moderator](docs/ai-moderator.md) - Automatically detect and moderate spam, link spam, and AI-generated content
1114

1215
### Fault Analysis Workflows
1316

17+
Investigate faults proactively and improve CI.
18+
1419
- [🏥 CI Doctor](docs/ci-doctor.md) - Monitor CI workflows and investigate failures automatically
1520
- [🚀 CI Coach](docs/ci-coach.md) - Optimize CI workflows for speed and cost efficiency
1621

1722
### Code Review Workflows
1823

19-
- [✅ Contribution Guidelines Checker](docs/contribution-guidelines-checker.md) - Review pull requests for compliance with contribution guidelines
2024
- [😤 Grumpy Reviewer](docs/grumpy-reviewer.md) - On-demand opinionated code review by a grumpy but thorough senior developer
2125
- [🔍 PR Nitpick Reviewer](docs/pr-nitpick-reviewer.md) - On-demand fine-grained code review focusing on style, conventions, and subtle improvements
26+
- [🔍 Contribution Check](docs/contribution-check.md) - Regularly review batches of open PRs against contribution guidelines and create prioritized reports
27+
- [✅ Contribution Guidelines Checker](docs/contribution-guidelines-checker.md) - Review pull requests for compliance with contribution guidelines
2228

2329
### Research, Status & Planning Workflows
2430

@@ -31,6 +37,7 @@ A sample family of reusable [GitHub Agentic Workflows](https://github.github.com
3137
- [📋 Daily Plan](docs/daily-plan.md) - Update planning issues for team coordination
3238
- [🔍 Discussion Task Miner](docs/discussion-task-miner.md) - Extract actionable improvement tasks from GitHub Discussions and create tracked issues
3339
- [🗺️ Weekly Repository Map](docs/weekly-repo-map.md) - Visualize repository file structure and size distribution with a weekly ASCII tree map
40+
- [📰 Tech Content Editorial Board](docs/tech-content-editorial-board.md) - Daily tech content editorial-board review of technical rigor, wording, structure, and editorial quality
3441

3542
### Dependency Management Workflows
3643

@@ -41,6 +48,8 @@ A sample family of reusable [GitHub Agentic Workflows](https://github.github.com
4148

4249
These workflows are triggered by specific "/" commands in issue or pull request comments, allowing for on-demand agentic assistance. Only maintainers or those with write access can trigger these workflows by commenting with the appropriate command.
4350

51+
You can use the "/plan" agent to turn the reports into actionable issues which can then be assigned to the appropriate team members or agents.
52+
4453
- [📊 Archie](docs/archie.md) - Generate Mermaid diagrams to visualize issue and pull request relationships with /archie command
4554
- [📋 Plan Command](docs/plan.md) - Break down issues into actionable sub-tasks with /plan command
4655
- [🏥 PR Fix](docs/pr-fix.md) - Analyze failing CI checks and implement fixes for pull requests
@@ -50,8 +59,6 @@ These workflows are triggered by specific "/" commands in issue or pull request
5059

5160
These workflows analyze the repository, code, and activity to produce reports, insights, and recommendations for improvements. They do not make any changes to the codebase directly but can be used as input for maintainers to take action.
5261

53-
You can use the "/plan" agent to turn the reports into actionable issues which can then be assigned to the appropriate team members or agents.
54-
5562
- [🔍 Daily Accessibility Review](docs/daily-accessibility-review.md) - Review application accessibility by automatically running and using the application
5663
- [📱 Multi-Device Docs Tester](docs/daily-multi-device-docs-tester.md) - Test documentation sites across mobile, tablet, and desktop viewports for responsive layout and interaction issues
5764
- [🔎 Daily Adhoc QA](docs/daily-qa.md) - Perform adhoc explorative quality assurance tasks
@@ -81,17 +88,15 @@ You can use the "/plan" agent to turn the reports into actionable issues which c
8188

8289
- [🔍 Daily Malicious Code Scan](docs/daily-malicious-code-scan.md) - Daily scan of recent code changes for suspicious patterns indicating malicious activity or supply chain attacks
8390

84-
## Maintainer
85-
86-
- [🛡️ AI Moderator](docs/ai-moderator.md) - Automatically detect and moderate spam, link spam, and AI-generated content
87-
- [🔍 Contribution Check](docs/contribution-check.md) - Regularly review batches of open PRs against contribution guidelines and create prioritized reports
88-
- [🤖 Repo Assist](docs/repo-assist.md) - Daily repository assistant that triages issues, fixes bugs, proposes improvements, and maintains activity summaries
89-
- [🔒 Sub-Issue Closer](docs/sub-issue-closer.md) - Automatically close parent issues when all their sub-issues are complete
90-
9191
## Meta-Workflows
9292

9393
- [🔧 Q - Workflow Optimizer](docs/q.md) - Expert system that analyzes and optimizes agentic workflows
9494

95+
### Issue Farming Workflows
96+
97+
- [🔒 Sub-Issue Closer](docs/sub-issue-closer.md) - Automatically close parent issues when all their sub-issues are complete
98+
- [🌳 Issue Arborist](docs/issue-arborist.md) - Automatically organize issues by linking related issues as parent-child sub-issues
99+
95100
## 🧩 Shared Workflow Fragments
96101

97102
Shared workflow fragments are reusable building blocks that can be imported into other workflows using `imports: [shared/name.md]`. They provide pre-configured tools, MCP servers, and setup steps.

docs/daily-file-diet.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ gh aw compile
2222

2323
The Daily File Diet workflow runs on weekdays and:
2424

25-
1. **Scans Source Files** - Finds all non-test source files in your repository, excluding generated directories like `node_modules`, `vendor`, `dist`, and `target`
25+
1. **Scans Source Files** - Finds all tracked non-test source files in your repository using `git ls-tree`, which automatically respects `.gitignore` and avoids scanning generated directories like `node_modules`, `vendor`, `dist`, and `target`
2626
2. **Identifies Oversized Files** - Detects files exceeding 500 lines (the healthy size threshold)
2727
3. **Analyzes Structure** - Examines what the file contains: functions, classes, modules, and their relationships
2828
4. **Creates Refactoring Issues** - Proposes concrete split strategies with specific file names, responsibilities, and implementation guidance
@@ -80,7 +80,7 @@ gh aw edit daily-file-diet
8080

8181
Common customizations:
8282
- **Adjust the threshold** - Change the 500-line limit to suit your team's preferences
83-
- **Focus on specific languages** - Restrict `find` commands to your repository's primary language
83+
- **Focus on specific languages** - Restrict the `grep` pattern in the `git ls-tree` pipeline to your repository's primary language
8484
- **Add labels** - Apply team-specific labels to generated issues
8585
- **Change the schedule** - Run less frequently if your codebase changes slowly
8686

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# 📰 Tech Content Editorial Board
2+
3+
> For an overview of all available workflows, see the [main README](../README.md).
4+
5+
**Daily editorial-board review of the repository's technical rigor, wording, structure, and editorial quality**
6+
7+
The [Tech Content Editorial Board workflow](../workflows/tech-content-editorial-board.md?plain=1) is a [GitHub Agentic Workflow](https://github.blog/ai-and-ml/automate-repository-tasks-with-github-agentic-workflows/) for reviewing a technical content repository as if it were being examined by a demanding editorial board of principal engineers, technical writers, and domain specialists. It focuses on content quality first: clarity, rigor, structure, examples, caveats, flow, and reader trust.
8+
9+
Rather than producing a passive report, the workflow is biased toward action. When it finds a safe, focused content improvement, it prefers to ship one small content pull request in the same run. It can also create a single tracking issue for materially new editorial backlog that is not already covered by an open issue or pull request.
10+
11+
## Installation
12+
13+
```bash
14+
# Install the 'gh aw' extension
15+
gh extension install github/gh-aw
16+
17+
# Add the workflow to your repository
18+
gh aw add-wizard githubnext/agentics/tech-content-editorial-board
19+
```
20+
21+
This walks you through adding the workflow to your repository.
22+
23+
## How It Works
24+
25+
```mermaid
26+
graph LR
27+
A[Inspect repository and open work] --> B[Choose one review lens]
28+
B --> C[Assess content quality]
29+
C --> D{Safe focused content edit?}
30+
D -->|Yes| E[Create one editorial PR]
31+
D -->|No| F[Record issue-only findings]
32+
E --> G[Check for duplicate tracking]
33+
F --> G
34+
G --> H[Create at most one tracking issue]
35+
```
36+
37+
Each run starts by inspecting the repository, recent work, and open issues or pull requests so it does not duplicate existing tracking. It then selects a review lens and evaluates the repository as a technical publishing asset, looking for weaknesses in:
38+
39+
- Technical rigor and accuracy
40+
- Wording, clarity, and flow
41+
- Structure and narrative coherence
42+
- Examples, diagrams, and caveats
43+
- Reader trust and practical usefulness
44+
45+
When a low-risk, article-level improvement is available, the workflow should prefer making that edit and opening a focused pull request. Any broader or remaining backlog is then summarized in at most one tracking issue.
46+
47+
## Simulated Board Personas
48+
49+
The workflow simulates a board-style review using named personas with distinct areas of expertise:
50+
51+
- **The Editor** — wording, structure, flow, coherence, section ordering, rewrites, and whether the article's argument lands clearly for engineering readers
52+
- **The Critic** — devil's-advocate skepticism, anti-hype pressure testing, second-order effects, hidden assumptions, and missing downside
53+
- **Martin Kleppmann** — consistency, correctness, ordering, edge cases
54+
- **Martin Fowler** — architecture, patterns, trade-offs, diagrams
55+
- **Robert C. Martin (Uncle Bob)** — clean architecture, separation of concerns
56+
- **Katherine Rack** — systems thinking, scale, failure cascades
57+
- **Ben Sigelman** — observability, tracing, debugging
58+
- **Klaus Marquardt** — Kafka, partitioning, message keys
59+
- **Greg Young** — DDD, event sourcing, CQRS
60+
- **Tanya Janca** — security, resilience, secrets hygiene
61+
- **Kelsey Hightower** — operations, deployment realism, maintainability
62+
- **Charity Majors** — on-call pain, telemetry, failure clarity
63+
64+
In addition to those board voices, the workflow uses an **Orchestrator** role during synthesis. The Orchestrator does not act as another reviewer; it pulls together the strongest themes, conflicts, objections, and concrete next actions into maintainable recommendations for humans to review.
65+
66+
## Usage
67+
68+
This workflow runs daily on weekdays and can also be started manually.
69+
70+
```bash
71+
gh aw run tech-content-editorial-board
72+
```
73+
74+
### Configuration
75+
76+
The workflow is designed to work out of the box for technical documentation repositories. By default it:
77+
78+
- Runs on weekdays
79+
- Focuses on content-only improvements rather than infrastructure or code changes
80+
- Creates at most one pull request and one issue per run
81+
- Uses repository memory to keep editorial attention moving across different focus areas over time
82+
83+
After editing run `gh aw compile` to update the workflow and commit all changes to the default branch.
84+
85+
### Human in the Loop
86+
87+
- Review the editorial pull request for tone, accuracy, and scope
88+
- Confirm that suggested backlog items are worth tracking
89+
- Merge only the focused content changes that match your publishing standards
90+
- Adjust prompts or schedule if you want the board to be more aggressive or more selective

workflows/agentic-wiki-writer.md

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,50 @@ safe-outputs:
7272
CONTENT=$(printf '%s' "$entry" | base64 -d | jq -r '.value')
7373
printf '%s\n' "$CONTENT" > "$FILENAME"
7474
done
75+
- name: Sanitize Mermaid diagrams
76+
run: |
77+
python3 - <<'EOF'
78+
import re, glob
79+
80+
def fix_mermaid_block(block):
81+
# Remove backtick markdown-string syntax from node labels.
82+
# GitHub's wiki renderer does not support mermaid markdown strings
83+
# (e.g. A["`text`"]), causing "Unable to render rich display" errors.
84+
# Pattern: "` inside_bt ` after_bt " -> " inside_bt after_bt "
85+
def fix_backtick_label(m):
86+
inside_bt = m.group(1)
87+
after_bt = m.group(2)
88+
combined = re.sub(
89+
r'\s+', ' ',
90+
(inside_bt + ' ' + after_bt).replace('\\n', ' ')
91+
).strip()
92+
return '"' + combined + '"'
93+
94+
fixed = re.sub(r'"`([^`]*)`([^"]*)"', fix_backtick_label, block)
95+
# Fix any remaining \n escape sequences in labels (replace with space)
96+
fixed = re.sub(r'\\n', ' ', fixed)
97+
return fixed
98+
99+
def fix_file(path):
100+
with open(path, encoding='utf-8') as f:
101+
content = f.read()
102+
parts = re.split(r'(```mermaid[^\n]*\n.*?```)', content, flags=re.DOTALL)
103+
fixed = ''.join(
104+
fix_mermaid_block(p) if p.startswith('```mermaid') else p
105+
for p in parts
106+
)
107+
if fixed != content:
108+
with open(path, 'w', encoding='utf-8') as f:
109+
f.write(fixed)
110+
return True
111+
return False
112+
113+
changed = [f for f in glob.glob('*.md') if fix_file(f)]
114+
if changed:
115+
print(f'Fixed Mermaid syntax in: {", ".join(changed)}')
116+
else:
117+
print('No Mermaid syntax issues found')
118+
EOF
75119
- name: Commit and push
76120
run: |
77121
git config user.name "github-actions[bot]"
@@ -578,6 +622,8 @@ Determine the correct `OWNER/REPO` and default branch by reading `.git/config` w
578622

579623
**Wiki cross-references** — Use wiki link syntax: `[[Page Name]]` or `[[Display Text|Page-Slug#section-slug]]`.
580624

625+
The `|` separator between display text and slug must be a bare pipe — do NOT backslash-escape it (`[[Control Plane\|Control-Plane]]` is wrong; `[[Control Plane|Control-Plane]]` is correct).
626+
581627
Only link to pages and sections that exist in the PAGES.md template. Use plain text for anything else.
582628

583629
NEVER use `[[display|https://...]]` — that is NOT valid wiki syntax. Use `[display](https://...)` for external URLs.
@@ -600,7 +646,7 @@ Before finalizing each page, check for these issues and fix them:
600646

601647
3. **Heading levels** — No page should start with `#` (H1). Start with content or `##` (H2).
602648

603-
4. **Link format** — Source code links use full GitHub URLs `[text](https://...)`. Wiki cross-references use `[[Page Name]]`. No bare relative paths. No `[[text|https://...]]` syntax.
649+
4. **Link format** — Source code links use full GitHub URLs `[text](https://...)`. Wiki cross-references use `[[Page Name]]` or `[[Display Text|Page-Slug]]` with a bare `|` (never backslash-escaped). No bare relative paths. No `[[text|https://...]]` syntax.
604650

605651
5. **Accuracy** — Content matches what the source code actually does. No fabricated features or APIs.
606652

workflows/daily-file-diet.md

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,13 @@ tools:
2525
github:
2626
toolsets: [default]
2727
bash:
28-
- "find . -type f -not -path '*/.git/*' -not -path '*/node_modules/*' -not -path '*/vendor/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/.next/*' -not -path '*/target/*' -not -path '*/__pycache__/*' -not -path '*/coverage/*' -not -path '*/venv/*' -not -path '*/.tox/*' -not -path '*/.mypy_cache/*' -name '*' -exec wc -l {} \\; 2>/dev/null"
28+
- "git ls-tree -r --name-only HEAD"
29+
- "git ls-tree -r -l --full-name HEAD"
30+
- "git ls-tree -r --name-only HEAD | grep -E * | grep -vE * | xargs wc -l 2>/dev/null"
31+
- "git ls-tree -r --name-only HEAD | grep -E * | xargs wc -l 2>/dev/null"
2932
- "wc -l *"
3033
- "head -n * *"
3134
- "grep -n * *"
32-
- "find . -type f -name '*.go' -not -path '*_test.go' -not -path '*/vendor/*'"
33-
- "find . -type f -name '*.py' -not -path '*/__pycache__/*' -not -path '*/venv/*'"
34-
- "find . -type f -name '*.ts' -not -path '*/node_modules/*' -not -path '*/dist/*'"
35-
- "find . -type f -name '*.js' -not -path '*/node_modules/*' -not -path '*/dist/*'"
36-
- "find . -type f -name '*.rb' -not -path '*/vendor/*'"
37-
- "find . -type f -name '*.java' -not -path '*/target/*'"
38-
- "find . -type f -name '*.rs' -not -path '*/target/*'"
39-
- "find . -type f -name '*.cs'"
40-
- "find . -type f \\( -name '*.go' -o -name '*.py' -o -name '*.ts' -o -name '*.js' -o -name '*.rb' -o -name '*.java' -o -name '*.rs' -o -name '*.cs' -o -name '*.cpp' -o -name '*.c' \\) -not -path '*/node_modules/*' -not -path '*/vendor/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/target/*' -not -path '*/__pycache__/*' -exec wc -l {} \\; 2>/dev/null"
4135
- "sort *"
4236
- "cat *"
4337

@@ -67,14 +61,12 @@ First, determine the primary programming language(s) used in this repository. Th
6761

6862
**For polyglot or unknown repos:**
6963
```bash
70-
find . -type f \( -name "*.go" -o -name "*.py" -o -name "*.ts" -o -name "*.js" -o -name "*.rb" -o -name "*.java" -o -name "*.rs" -o -name "*.cs" -o -name "*.cpp" -o -name "*.c" \) \
71-
-not -path "*/node_modules/*" \
72-
-not -path "*/vendor/*" \
73-
-not -path "*/dist/*" \
74-
-not -path "*/build/*" \
75-
-not -path "*/target/*" \
76-
-not -path "*/__pycache__/*" \
77-
-exec wc -l {} \; 2>/dev/null | sort -rn | head -20
64+
git ls-tree -r --name-only HEAD \
65+
| grep -E '\.(go|py|ts|tsx|js|jsx|rb|java|rs|cs|cpp|c|h|hpp)$' \
66+
| grep -vE '(_test\.go|\.test\.(ts|js)|\.spec\.(ts|js)|test_[^/]*\.py|[^/]*_test\.py)$' \
67+
| xargs wc -l 2>/dev/null \
68+
| sort -rn \
69+
| head -20
7870
```
7971

8072
Also skip test files (files ending in `_test.go`, `.test.ts`, `.spec.ts`, `.test.js`, `.spec.js`, `_test.py`, `test_*.py`, etc.) — focus on non-test production code.

0 commit comments

Comments
 (0)