af-review-ui
Review Airflow UI code for consistency, best practices, and conventions.
Skill by guan404ming
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/guan404ming-af-review-ui
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/af-review-ui
What's inside
- Skill name
af-review-ui- Description
- Review Airflow UI code for consistency, best practices, and conventions.
- License
- Apache-2.0
- Instructions
- 88 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Review Airflow UI
## Usage
```
/review-airflow-ui # local branch vs main
/review-airflow-ui <PR_URL> # checkout and review PR
```
## Stack
React 19, Chakra UI v3, React Query, TypeScript, Vite, pnpm
## Review Checklist
Lead with conventions. Most findings should be "mirror the existing pattern",
not personal taste. Before flagging, grep for the canonical example so the
finding points the author at code already in the tree.
**Reuse over rebuild**
- Reuse shared components before adding markup: `StateBadge` (states),
`ErrorAlert` (errors), `Time` (timestamps), `Dialog` / `Pagination` /
`Tooltip` from `src/components/ui/`. Grep `src/components/` first.
- Never hardcode a state→color map or literal `"red"`/`"green"`; use
`StateBadge` or a Chakra `colorPalette` token.
- Data fetching goes through generated hooks in `openapi/queries`, not ad-hoc fetch.
**Types**
- API types come from `openapi-gen/` (`openapi/requests/types.gen`). Never
hand-write a `string` where a generated enum exists (e.g.
`TaskInstanceState`, `DagRunState`).
- After a backend API change, regenerate; never hand-edit generated files.
**Component conventions**
- Props: `type Props = { readonly x: T }`. Return `undefined`, not `null`.
- User-facing text via `translate("ns:key")` — no string literals in JSX.
- Modals follow the existing `Dialog.Root` pattern (`lazyMount`,
`unmountOnExit`, `onOpenChange={onClose}`); gate the query with `enabled`.
- Complete `useMemo` / `useEffect` dependency arrays.
- Mirror the closest existing page/component for file layout and naming.
## Instructions
1. Get changed files:
- PR: `gh pr checkout <URL>` then `gh pr diff --name-only`
- Local: `git diff main --name-only`
2. If backend API changed, remind to run:
```bash
prek airflow-core:generate-openapi-spec
cd airflow-core/src/airflow/ui && pnpm codegen
```
3. Run `prek airflow-core:ts-compile-lint-ui`
4. Skip generated files: `openapi-gen/`, `openapi.merged.json`, `api_fastapi/*/openapi/*.yaml`. Review only this PR's changes, not unchanged code. If `git diff main` shows files the PR's own commits never touched, the branch is behind — note it needs a rebase, don't review the rebase noise.
## Output
Finding style:
- **Imperative voice**: state the fix, not the observation ("Reuse `ErrorAlert`", not "this could reuse ErrorAlert").
- **Constructive**: name the convention and cite the file/symbol to mirror (e.g. "use `StateBadge` like `Run/Details.tsx:60`").
- **Polite but brief**: a one-line thanks is fine; never pad with praise, list what is already fine, or restate the diff.
- **Suggest, don't command**: "Consider" / "Could" / "Suggest" over "You must".
Emit exactly these three parts and nothing else:
1. **Checks** — one line: `ts-compile-lint-ui ✅ · <hook> ✅`. If backend API changed, add: `Run codegen (prek airflow-core:generate-openapi-spec && pnpm codegen).`
2. **Findings** — real issues only, one line each, most important first. Skip the section entirely if none. Do NOT post.
```
1. `src/Foo.tsx:42` - Reuse `ErrorAlert` (see `src/components/ErrorAlert.tsx`) instead of the inline alert.
2. `src/Bar.tsx:15` - Type as `TaskInstanceState` from `openapi/requests/types.gen`, not `string`.
```
Tag non-blocking ones `(nit)`. Order by impact: correctness/convention breaks first, then reuse, then nits. Cap at the ~7 that matter; drop the rest.
**Confirm every cited line number** by grepping the file (`grep -n` the symbol) before writing it — point at the exact line of the code being changed, never an approximate one. Cite the example-to-mirror's location too.
3. **Verdict** — one line, courteous, one word + half-sentence why:
- **Approve** — good to merge.
- **Approve with comments** — nits only, OK as-is.
- **Request changes** — name the blocking issue(s).
Keep the whole output under ~15 lines. If you wrote a paragraph, cut it.
After the verdict, add one **zh-TW 摘要** block: 口語白話總結,依序講三件事 — 這個 PR 在做什麼、findings 的重點(用白話帶過每條,非阻擋的講「小建議」即可,沒 findings 就說沒問題)、結論要不要改。簡短,別逐字翻譯英文 findings。
```
**摘要(zh-TW):** <這個 PR 做了什麼>。<findings 白話重點>。<結論/要不要改>。
```From guan404ming/gmccc, Apache-2.0.
More from guan404ming/gmccc
- 0.541score
dev-pr-summarize
guan404ming
Generate a concise PR changelog summary from the current branch diff.
SkillBFreshness: B★ 1Claude Code +9 - 0.535score
dev-git-setup
guan404ming
Set up git aliases.
SkillBFreshness: B★ 1Claude Code +9 - 0.491score
af-dev-ui
guan404ming
Develop Airflow UI features from an issue link or text description.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
dev-pr-check
guan404ming
Check the current branch diff for minimality, correctness with sufficient tests, and repo conventions.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
dev-rb
guan404ming
Rebase open PRs onto the default branch, resolve conflicts, and force push.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
dev-slides
guan404ming
Generate a Google Slides presentation from a paper PDF URL using gws CLI.
SkillCFreshness: C★ 1Claude Code +9 - 0.426score
af-prek
guan404ming
Run pre-commit checks using prek.
SkillDFreshness: D★ 1Claude Code +9 - 0.426score
af-test
guan404ming
Write tests for Airflow backend API endpoints following project conventions.
SkillDFreshness: D★ 1Claude Code +9 - 0.426score
dev-autodev
guan404ming
Common autodev loop for branch, implement, test, commit, and PR summary.
SkillDFreshness: D★ 1Claude Code +9 - 0.426score
dev-pr-review
guan404ming
Review code changes for consistency, best practices, and conventions.
SkillDFreshness: D★ 1Claude Code +9 - 0.426score
dev-reply
guan404ming
Address PR review comments, fix valid ones and draft replies for invalid ones.
SkillDFreshness: D★ 1Claude Code +9 - 0.423score
tvm-dev
guan404ming
Resolve a TODO or fix an issue in the TVM relax folder.
SkillDFreshness: D★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jul 6, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/guan404ming/gmccc
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from guan404ming
- 0.552score
lyrics-translator
guan404ming
Translate lyrics while preserving musical constraints (syllable counts, rhyme scheme, syllable patterns).
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
rhyme-analyzer
guan404ming
Extract rhyme endings, check if texts rhyme, and detect rhyme schemes.
SkillBFreshness: B★ 1Claude Code +9 - 0.549score
lyrics-validator
guan404ming
Verify translated lyrics against musical constraints including syllable counts, rhyme scheme, and syllable patterns.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
lyrics-translator-counter-only
guan404ming
Ablation variant of lyrics-translator that enforces syllable counts only.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
lyrics-translator-phase1-only
guan404ming
Ablation variant of lyrics-translator that extracts constraints and translates once, with no refinement loop.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
lyrics-translator-prompt-only
guan404ming
Ablation variant of lyrics-translator with no scripts.
SkillBFreshness: B★ 1Claude Code +9
Cite this page
af-review-ui skill. Agent Mart. https://agentmart.dev/skills/guan404ming-af-review-ui (last updated 2026-10-24)