Skip to content

Commit 99ca007

Browse files
Fixes
1 parent 6040eef commit 99ca007

18 files changed

Lines changed: 566 additions & 161 deletions

File tree

.claude/skills/spec-check/SKILL.md

Lines changed: 224 additions & 30 deletions
Large diffs are not rendered by default.

.claude/skills/submit-pr/SKILL.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ name: submit-pr
33
description: Creates a pull request with a well-structured description after verifying CI passes. Use when the user asks to submit, create, or open a pull request.
44
disable-model-invocation: true
55
---
6-
<!-- agent-pmo:d58c330 -->
6+
<!-- agent-pmo:29b9dcf -->
77

88
# Submit PR
99

1010
Create a pull request for the current branch with a well-structured description.
1111

1212
## Steps
1313

14-
1. Run `make ci` -- must pass completely before creating PR
14+
1. Run `make ci` must pass completely before creating PR
1515
2. **Generate the diff against main.** Run `git diff main...HEAD > /tmp/pr-diff.txt` to capture the full diff between the current branch and the head of main. This is the ONLY source of truth for what the PR contains. **Warning:** the diff can be very large. If the diff file exceeds context limits, process it in chunks (e.g., read sections with `head`/`tail` or split by file) rather than trying to load it all at once.
16-
3. **Derive the PR title and description SOLELY from the diff.** Read the diff output and summarize what changed. Ignore commit messages, branch names, and any other metadata -- only the actual code/content diff matters.
16+
3. **Derive the PR title and description SOLELY from the diff.** Read the diff output and summarize what changed. Ignore commit messages, branch names, and any other metadata only the actual code/content diff matters.
1717
4. Write PR body using the template in `.github/pull_request_template.md`
1818
5. Fill in (based on the diff analysis from step 3):
1919
- TLDR: one sentence
@@ -27,7 +27,7 @@ Create a pull request for the current branch with a well-structured description.
2727
## Rules
2828

2929
- Never create a PR if `make ci` fails
30-
- PR description must be specific and tight -- no vague placeholders
30+
- PR description must be specific and tight no vague placeholders
3131
- Link to the relevant GitHub issue if one exists
3232

3333
## Success criteria

.claude/skills/upgrade-packages/SKILL.md

Lines changed: 59 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,71 @@
11
---
22
name: upgrade-packages
3-
description: Upgrade all dependencies/packages to their latest versions for C#/.NET. Use when the user says "upgrade packages", "update dependencies", "bump versions", "update packages", or "upgrade deps".
3+
description: Upgrade all dependencies/packages to their latest versions for C#/.NET and Python. Use when the user says "upgrade packages", "update dependencies", "bump versions", "update packages", or "upgrade deps".
44
argument-hint: "[--check-only] [--major] [package-name]"
55
---
6-
<!-- agent-pmo:d58c330 -->
6+
<!-- agent-pmo:29b9dcf -->
77

88
# Upgrade Packages
99

10-
Upgrade all project dependencies to their latest compatible (or latest major, if `--major`) versions.
10+
Upgrade all project dependencies to their latest compatible (or latest major, if `--major`) versions for HealthcareSamples (C#/.NET primary, Python embedding service + scripts).
1111

1212
## Arguments
1313

14-
- `--check-only` -- List outdated packages without upgrading. Stop after Step 2.
15-
- `--major` -- Include major version bumps (breaking changes). Without this flag, stay within semver-compatible ranges.
14+
- `--check-only` List outdated packages without upgrading. Stop after Step 2.
15+
- `--major` Include major version bumps (breaking changes). Without this flag, stay within semver-compatible ranges.
1616
- Any other argument is treated as a specific package name to upgrade (instead of all packages).
1717

18-
## Step 1 -- Detect language and package manager
18+
## Step 1 Detect language and package manager
1919

20-
This is a C#/.NET repo. Manifest files:
21-
- `HealthcareSamples.sln`
22-
- `Directory.Build.props`
23-
- Individual `.csproj` files across Clinical, Scheduling, ICD10, Dashboard, and Shared projects
20+
Inspect the repo for these manifest files:
2421

25-
## Step 2 -- List outdated packages
22+
| Manifest file | Language | Package manager |
23+
|---|---|---|
24+
| `*.csproj` / `*.sln` | C# / .NET | NuGet (dotnet) |
25+
| `Directory.Build.props` | C# / .NET | NuGet (dotnet) — central version pinning |
26+
| `requirements.txt` | Python (ICD10/embedding-service, ICD10/scripts/CreateDb) | pip |
2627

28+
This repo uses both. Process .NET first, then Python.
29+
30+
## Step 2 — List outdated packages
31+
32+
Run the appropriate command BEFORE upgrading anything. Show the user what will change.
33+
34+
### C# / .NET (NuGet)
2735
```bash
28-
dotnet list package --outdated
36+
dotnet list HealthcareSamples.sln package --outdated
2937
```
30-
31-
For transitive dependencies too: `dotnet list package --outdated --include-transitive`
38+
For transitive dependencies too: `dotnet list HealthcareSamples.sln package --outdated --include-transitive`
3239

3340
**Read the docs:** https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-list-package
3441

42+
### Python (pip)
43+
The Python pieces use plain `requirements.txt` files. Install each in a venv and run `pip list --outdated`:
44+
```bash
45+
# embedding service
46+
python -m venv /tmp/embedding-venv
47+
/tmp/embedding-venv/bin/pip install -r ICD10/embedding-service/requirements.txt
48+
/tmp/embedding-venv/bin/pip list --outdated
49+
50+
# DB scripts
51+
python -m venv /tmp/scripts-venv
52+
/tmp/scripts-venv/bin/pip install -r ICD10/scripts/CreateDb/requirements.txt
53+
/tmp/scripts-venv/bin/pip list --outdated
54+
```
55+
56+
**Read the docs:** https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-U
57+
3558
If `--check-only` was passed, **stop here** and report the outdated list.
3659

37-
## Step 3 -- Read the official upgrade docs
60+
## Step 3 Read the official upgrade docs
3861

3962
**Before running any upgrade command, you MUST fetch and read the official documentation URL listed above for the detected package manager.** Use WebFetch to retrieve the page. This ensures you use the correct flags and understand the behavior. Do not guess at flags or options from memory.
4063

41-
## Step 4 -- Upgrade packages
64+
## Step 4 — Upgrade packages
65+
66+
Run the upgrade. If a specific package name was given as an argument, upgrade only that package.
4267

68+
### C# / .NET (NuGet)
4369
There is NO single `dotnet upgrade-all` command. You must upgrade each package individually:
4470
```bash
4571
# For each outdated package from Step 2:
@@ -58,7 +84,17 @@ dotnet outdated --upgrade
5884
```
5985
**Read the docs:** https://github.com/dotnet-outdated/dotnet-outdated
6086

61-
## Step 5 -- Verify the upgrade
87+
### Python (pip)
88+
For `requirements.txt`:
89+
```bash
90+
/tmp/embedding-venv/bin/pip install --upgrade -r ICD10/embedding-service/requirements.txt
91+
/tmp/embedding-venv/bin/pip freeze > ICD10/embedding-service/requirements.txt
92+
93+
/tmp/scripts-venv/bin/pip install --upgrade -r ICD10/scripts/CreateDb/requirements.txt
94+
/tmp/scripts-venv/bin/pip freeze > ICD10/scripts/CreateDb/requirements.txt
95+
```
96+
97+
## Step 5 — Verify the upgrade
6298

6399
After upgrading, run the project's build and test suite to confirm nothing broke:
64100

@@ -68,17 +104,17 @@ make ci
68104

69105
If tests fail:
70106
1. Read the failure output carefully
71-
2. Check the changelog / migration guide for the upgraded packages
107+
2. Check the changelog / migration guide for the upgraded packages (fetch the release notes URL if available)
72108
3. Fix breaking changes in the code
73109
4. Re-run tests
74-
5. If stuck after 3 attempts on the same failure, report it to the user
110+
5. If stuck after 3 attempts on the same failure, report it to the user with the error details and the package that caused it
75111

76-
## Step 6 -- Report
112+
## Step 6 Report
77113

78114
Provide a summary:
79115

80116
- Packages upgraded (old version -> new version)
81-
- Packages skipped (and why)
117+
- Packages skipped (and why, e.g., major version bump without `--major` flag)
82118
- Build/test result after upgrade
83119
- Any breaking changes that were fixed
84120
- Any packages that could not be upgraded (with error details)
@@ -90,8 +126,8 @@ Provide a summary:
90126
- **Always run tests after upgrading** to catch breakage immediately
91127
- **Never remove packages** unless they were explicitly deprecated and replaced
92128
- **Never downgrade packages** unless rolling back a broken upgrade
93-
- **Never modify lockfiles manually** -- let the package manager regenerate them
94-
- **Commit nothing** -- leave changes in the working tree for the user to review
129+
- **Never modify lockfiles manually** let the package manager regenerate them
130+
- **Commit nothing** leave changes in the working tree for the user to review
95131

96132
## Success criteria
97133

.claude/skills/website-audit/SKILL.md

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name: website-audit
33
description: Audits a website for SEO, AI search performance, structured data, mobile usability, broken links, and social media cards. Fixes issues found. Use when the user mentions "audit website", "SEO", "fix search ranking", "AI search", "structured data", "social media cards", or "website performance".
44
---
5-
<!-- agent-pmo:d58c330 -->
5+
<!-- agent-pmo:29b9dcf -->
66

77
# Website Audit
88

@@ -26,52 +26,54 @@ Audit Progress:
2626
- [ ] Step 12: Report findings
2727
```
2828

29-
- Check the outputted HTML/CSS/JavaScript AFTER the website is generated by the static content generator. - Don't just check the static content before the website is generated.
29+
- Check the outputted HTML/CSS/JavaScript AFTER the website is generated by the static content generator. - Don't just check the static content before the website is generated.
3030
- Fix issues at the core where the static content templates are stored - not in the outputted HTML (e.g. _site)
3131
- Never manually edit the generated website content directly
3232

33-
## Step 1 -- Read guidelines
33+
## Step 1 Read guidelines
3434

3535
Fetch and read each of these before auditing. These are the authoritative references for every step that follows.
3636

3737
- [Google's guidance on using generative AI content](https://developers.google.com/search/docs/fundamentals/using-gen-ai-content)
3838
- [Top ways to ensure content performs well in Google's AI experiences](https://developers.google.com/search/blog/2025/05/succeeding-in-ai-search)
3939
- [SEO Starter Guide](https://developers.google.com/search/docs/fundamentals/seo-starter-guide)
4040

41+
If the repo has a business plan doc, take it into account
42+
4143
Identify the website source files in the repo. Determine the framework (static site generator, Next.js, Hugo, etc.) so you know where to find templates, metadata, and content.
4244

43-
## Step 2 -- Audit AI search readiness
45+
## Step 2 Audit AI search readiness
4446

4547
Apply the guidance from the AI search article. Check:
4648

47-
1. **Content quality** -- Is content original, expert-level, and comprehensive? Flag thin or duplicated pages.
48-
2. **Clear structure** -- Do pages use descriptive headings, lists, and concise answers to likely questions?
49-
3. **Entity clarity** -- Are key terms, products, and concepts defined clearly so AI can extract them?
50-
4. **Freshness signals** -- Are dates, update timestamps, and authorship present?
49+
1. **Content quality** Is content original, expert-level, and comprehensive? Flag thin or duplicated pages.
50+
2. **Clear structure** Do pages use descriptive headings, lists, and concise answers to likely questions?
51+
3. **Entity clarity** Are key terms, products, and concepts defined clearly so AI can extract them?
52+
4. **Freshness signals** Are dates, update timestamps, and authorship present?
5153

5254
Fix issues directly in the source files. For each fix, note what changed and why.
5355

54-
## Step 3 -- Audit SEO and keywords
56+
## Step 3 Audit SEO and keywords
5557

5658
1. Search [Google Trends](https://trends.google.com/home) for trending keywords related to the website's content.
5759
2. Review each page's `<title>`, `<meta name="description">`, and `<h1>` tags.
58-
3. Check for keyword opportunities -- can trending terms be naturally inserted into headings, descriptions, or body content?
60+
3. Check for keyword opportunities can trending terms be naturally inserted into headings, descriptions, or body content?
5961
4. Verify each page has a unique, descriptive title (50-60 chars) and meta description (150-160 chars).
6062
5. Check image `alt` attributes describe the image content and include relevant keywords where natural.
6163

6264
Apply the [SEO Starter Guide](https://developers.google.com/search/docs/fundamentals/seo-starter-guide) principles. Fix issues directly.
6365

64-
## Step 4 -- Audit crawling and indexing
66+
## Step 4 Audit crawling and indexing
6567

6668
Reference: [Overview of crawling and indexing topics](https://developers.google.com/search/docs/crawling-indexing)
6769

68-
1. **robots.txt** -- Locate and review it. Verify it doesn't block important pages. Reference: [robots.txt spec](https://developers.google.com/search/docs/crawling-indexing/robots-txt)
69-
2. **Sitemap** -- Locate the sitemap (or sitemap index). Verify all important pages are listed and no dead URLs are included. Reference: [Sitemap guidelines](https://developers.google.com/search/docs/crawling-indexing/sitemaps/large-sitemaps)
70-
3. **Meta robots tags** -- Check for unintended `noindex` or `nofollow` directives on pages that should be indexed.
70+
1. **robots.txt** Locate and review it. Verify it doesn't block important pages. Reference: [robots.txt spec](https://developers.google.com/search/docs/crawling-indexing/robots-txt)
71+
2. **Sitemap** Locate the sitemap (or sitemap index). Verify all important pages are listed and no dead URLs are included. Reference: [Sitemap guidelines](https://developers.google.com/search/docs/crawling-indexing/sitemaps/large-sitemaps)
72+
3. **Meta robots tags** Check for unintended `noindex` or `nofollow` directives on pages that should be indexed.
7173

7274
Note: robots.txt and sitemaps are often auto-generated. If so, check the generator config rather than the output file.
7375

74-
## Step 5 -- Audit broken links and canonicalization
76+
## Step 5 Audit broken links and canonicalization
7577

7678
Reference: [What is canonicalization](https://developers.google.com/search/docs/crawling-indexing/canonicalization)
7779

@@ -80,7 +82,7 @@ Reference: [What is canonicalization](https://developers.google.com/search/docs/
8082
3. Check for duplicate content accessible via multiple URLs (with/without trailing slash, www vs non-www).
8183
4. Verify redirects use 301 (permanent) not 302 (temporary) where appropriate.
8284

83-
## Step 6 -- Audit mobile usability
85+
## Step 6 Audit mobile usability
8486

8587
Reference: [Mobile-first indexing best practices](https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing)
8688

@@ -89,7 +91,7 @@ Reference: [Mobile-first indexing best practices](https://developers.google.com/
8991
3. Verify touch targets are adequately sized (min 48x48px).
9092
4. Check font sizes are readable without zooming (min 16px body text).
9193

92-
## Step 7 -- Audit structured data
94+
## Step 7 Audit structured data
9395

9496
Reference: [Structured data guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies)
9597

@@ -102,7 +104,7 @@ Reference: [Structured data guidelines](https://developers.google.com/search/doc
102104
- **FAQ** for pages with question/answer content
103105
4. Validate JSON-LD syntax is correct.
104106

105-
## Step 8 -- Audit social media cards
107+
## Step 8 Audit social media cards
106108

107109
Reference: [Implementing Social Media Preview Cards](https://documentation.platformos.com/use-cases/implementing-social-media-preview-cards)
108110

@@ -124,31 +126,31 @@ Ensure that all claims are backed up with a link to a reputable source. As an ex
124126
125127
Search for the authoritative URL and add a link to the URL. If it is not available, change the claim to something that can be substatiated.
126128

127-
## Step 10 -- Audit Design Compliance
129+
## Step 10 Audit Design Compliance
128130

129131
Read the design system docs and view the design screens in the designsystem folder.
130132

131-
## Step 11 -- Test with Playwright
133+
## Step 11 Test with Playwright
132134

133135
Build and run the website locally using `make website-run` (or the project's equivalent dev server command).
134136

135137
**Desktop tests (1280x720):**
136138

137-
1. Navigate to the homepage -- take a screenshot.
138-
2. Navigate to each major section -- verify pages load without errors.
139+
1. Navigate to the homepage take a screenshot.
140+
2. Navigate to each major section verify pages load without errors.
139141
3. Check the browser console for JavaScript errors.
140142
4. Verify all navigation links work.
141143

142144
**Mobile tests (375x667, iPhone SE):**
143145

144146
1. Resize the browser to mobile dimensions.
145-
2. Navigate to the homepage -- take a screenshot.
147+
2. Navigate to the homepage take a screenshot.
146148
3. Verify the layout is responsive (no horizontal overflow, readable text).
147149
4. Test navigation menu (hamburger menu if applicable).
148150

149151
If any page fails to load or has console errors, fix the issue and retest.
150152

151-
## Step 12 -- Report findings
153+
## Step 12 Report findings
152154

153155
Summarize the audit results:
154156

@@ -170,8 +172,8 @@ Summarize the audit results:
170172

171173
## Rules
172174

173-
- **Fix issues directly** -- don't just report them. Only flag issues as warnings when they require human judgment (e.g., content tone, keyword selection).
174-
- **One step at a time** -- complete each step before moving to the next.
175-
- **Preserve existing content** -- improve structure and metadata without rewriting the author's voice.
176-
- **No keyword stuffing** -- keywords must read naturally in context.
177-
- **Respect the framework** -- edit templates/configs, not generated output files.
175+
- **Fix issues directly** don't just report them. Only flag issues as warnings when they require human judgment (e.g., content tone, keyword selection).
176+
- **One step at a time** complete each step before moving to the next.
177+
- **Preserve existing content** improve structure and metadata without rewriting the author's voice.
178+
- **No keyword stuffing** keywords must read naturally in context.
179+
- **Respect the framework** edit templates/configs, not generated output files.

.clinerules/00-read-instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- agent-pmo:d58c330 -->
1+
<!-- agent-pmo:29b9dcf -->
22

33
# Single Source of Truth
44

.github/copilot-instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- agent-pmo:d58c330 -->
1+
<!-- agent-pmo:29b9dcf -->
22

33
@CLAUDE.md
44

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# agent-pmo:d58c330
1+
# agent-pmo:29b9dcf
22

33
# =============================================================================
44
# UNIVERSAL

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- agent-pmo:d58c330 -->
1+
<!-- agent-pmo:29b9dcf -->
22

33
# Single Source of Truth
44

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- agent-pmo:d58c330 -->
1+
<!-- agent-pmo:29b9dcf -->
22

33
# HealthcareSamples -- Agent Instructions
44

0 commit comments

Comments
 (0)