Skip to content

Commit e381a47

Browse files
Add CI for demos and link checks, curator section, live badges
1 parent a277707 commit e381a47

3 files changed

Lines changed: 69 additions & 4 deletions

File tree

.github/workflows/demos.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: demos
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
run:
14+
runs-on: ubuntu-latest
15+
strategy:
16+
matrix:
17+
node: [18, 20, 22]
18+
name: node ${{ matrix.node }}
19+
steps:
20+
- uses: actions/checkout@v4
21+
- uses: actions/setup-node@v4
22+
with:
23+
node-version: ${{ matrix.node }}
24+
- name: "MCP server + client (§5)"
25+
run: node reference/05-mcp-server-client/mcp-client.mjs | grep -F "add(2, 3) -> 5"
26+
- name: "Coding agent (§6)"
27+
run: node reference/06-coding-agent/example.mjs | grep -F "final: Created greet.txt"
28+
- name: "Token accounting (§7)"
29+
run: node reference/07-token-accounting/example.mjs | grep -F "cache saved:"

.github/workflows/links.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: links
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths: ["**/*.md"]
7+
schedule:
8+
- cron: "0 6 * * 1" # weekly, Monday 06:00 UTC
9+
workflow_dispatch:
10+
11+
permissions:
12+
contents: read
13+
14+
jobs:
15+
check:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
- name: Check every curated link
20+
uses: lycheeverse/lychee-action@v2
21+
with:
22+
# 403/429 accepted: Medium/YouTube-class hosts bot-block automated
23+
# requests while the pages are fine in a browser.
24+
args: >-
25+
--no-progress
26+
--max-retries 2
27+
--max-concurrency 4
28+
--accept '100..=103,200..=299,403,429'
29+
--exclude-all-private
30+
README.md CONTRIBUTING.md 'reference/**/*.md'
31+
fail: true

README.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
</p>
66

77
<p align="center">
8-
<img alt="stars" src="https://img.shields.io/github/stars/TheSeydiCharyyev/build-your-own-agent?style=social">
8+
<a href="https://github.com/TheSeydiCharyyev/build-your-own-agent/actions/workflows/demos.yml"><img alt="demos" src="https://github.com/TheSeydiCharyyev/build-your-own-agent/actions/workflows/demos.yml/badge.svg"></a>
9+
<a href="https://github.com/TheSeydiCharyyev/build-your-own-agent/actions/workflows/links.yml"><img alt="links" src="https://github.com/TheSeydiCharyyev/build-your-own-agent/actions/workflows/links.yml/badge.svg"></a>
910
<img alt="license" src="https://img.shields.io/badge/license-MIT-blue">
10-
<img alt="PRs welcome" src="https://img.shields.io/badge/PRs-welcome-brightgreen">
11-
<img alt="status" src="https://img.shields.io/badge/status-v1-brightgreen">
1211
</p>
1312

1413
---
@@ -22,7 +21,7 @@ git clone https://github.com/TheSeydiCharyyev/build-your-own-agent
2221
node build-your-own-agent/reference/06-coding-agent/example.mjs
2322
```
2423

25-
A coding agent writes a file, reads it back, and verifies itself — zero dependencies, no API key. Then open [`agent.mjs`](reference/06-coding-agent/agent.mjs): the entire loop fits on one page.
24+
A coding agent writes a file, reads it back, and verifies itself — zero dependencies, no API key, Node 18+. Then open [`agent.mjs`](reference/06-coding-agent/agent.mjs): the entire loop fits on one page.
2625

2726
## Why this exists
2827

@@ -38,6 +37,12 @@ There are already excellent **from-scratch courses** — one author, one linear
3837
- **A living map, not a frozen curriculum.** The field moves monthly. A 500-lesson course ossifies; an index swaps one link and stays current. Quality is gatekept like a real `awesome` list.
3938
- **Own reference implementations where the gaps are.** For the components with no good from-scratch resource, this repo ships its own minimal code — the part you can't get by linking to someone else's course.
4039

40+
## Who curates this
41+
42+
I'm [Seydi](https://github.com/TheSeydiCharyyev) — an OSS contributor with merged PRs in [Storybook](https://github.com/storybookjs/storybook) (org member), [goose](https://github.com/block/goose), and [Supabase](https://github.com/supabase/supabase-js). §7 grew out of building [quotaburn](https://github.com/TheSeydiCharyyev/quotaburn), a token-cost CLI on npm.
43+
44+
Method: every link is fetched and read, and every reference demo is run, before it enters the index — CI re-verifies both (badges above).
45+
4146
## The stack
4247

4348
| # | Component | Curated | Reference impl |

0 commit comments

Comments
 (0)