Medical Research Skills for Claude Code, Codex, Cursor & Copilot
의사가 만든 58개 오픈소스 스킬로 의료 연구 전 과정을 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Native iOS SwiftUI health & fitness app — workout tracking with log-a-set-in-two-taps, photo + barcode meal scanning (Claude vision), HRV / RHR / sleep biology and a derived Performance Age, an AI research chat with citations, and optional supplement / protocol tracking with reminders and weekly recaps.
iOS 18+, SwiftUI, SwiftData (CloudKit-backed), Swift 6.0. Companion Watch app, two widget targets, and Live Activities for in-progress workouts and dose windows.
Peptide/ iOS app (SwiftUI)
App/ DataStore + AppLog + AppConstants
DesignSystem/ Theme tokens, glass components, animations
Models/ PeptideProtocol, UserProfile, ScannedProduct, …
Data/ SwiftData @Model classes, peptide JSON, mocks
Services/ networking, scheduling, store, HealthKit,
notifications, cycle planning, watch sync,
recommendations (~70 files)
Features/ UI by tab: Home (Today), Train, Meals,
Biology, Library — plus secondary surfaces
Profile, AIResearch, Onboarding, Auth,
Sharing, Database, WeeklySummary.
Intents/ Siri shortcuts (AppIntents)
Resources/ Info.plist, Localizable.xcstrings, .storekit
PeptideWatch/ watchOS companion: vertical pages for Today rings,
Recovery, Sleep Score, Nutrition and Protocol
(data pushed from the phone over WatchConnectivity)
PeptideWidgets/ iOS widgets (next dose, compliance ring,
nutrition, training) + Live Activities
PeptideWatchWidgets/ watchOS complications (next dose, Atlas Score,
habits, Recovery, Sleep Score)
WatchShared/ Sleep-stage ring + watch formatting, compiled
into both watch targets only
Shared/ WatchData, WidgetData, DoseWindowAttributes,
WatchPalette (compiled into every target)
server/ Vercel proxy (Anthropic key holder)
scripts/peptide-dataset/ Python pipeline that generates peptide JSON
fastlane/ Beta lane → TestFlight
.github/workflows/ PR checks, TestFlight, binary-size gate
The Xcode project is generated. Don't commit Peptide.xcodeproj.
brew install xcodegen
xcodegen generate
open Peptide.xcodeproj
Build the Peptide scheme for an iOS simulator or device.
StoreKit testing is wired to Peptide/Resources/Products.storekit
for both Run and Test actions.
Service convention (Peptide/Services/): stateful services are
final class singletons (.shared); stateless namespaces are
caseless enums with static members; pure-computation types are
named *Engine.
Everything visual comes from Peptide/DesignSystem/. Four rules, all of
them enforced by SwiftLint (custom_rules in .swiftlint.yml) or by
there being exactly one primitive to reach for:
AppColor token, never a raw Color(hex:) /
Color(red:…) / Color.white. Surface and ink tokens resolve per trait
collection through Color(light:dark:), which is what makes light mode
work; a literal silently opts that screen out. Ink painted on an accent
fill is AppColor.onAccent; ink on a translucent wash or on the app
background is AppColor.textPrimary. Domain palettes that must stay
constant (macros, HealthKit metrics, anatomy) are listed in
ColorTheme.swift and excluded from the lint rule.AppFont ramp, or AppFont.scaled(_:weight:design:)
for a size the ramp doesn't cover. Font.system(size:) ignores the
content-size category outright, so anything set that way is invisible to
Dynamic Type. Sizes above 24pt are display glyphs and stay fixed.Assets.xcassets/Equipment and refer to it as AppGlyph.asset;
GlyphImage sizes either kind of glyph like AppFont.scaled would, so
both tint and scale the same.glassSurface(cornerRadius:tinted:) for cards,
glassControl(_:tint:border:) for controls. Both render the real iOS 26
material or the legacy translucent recipe, never both stacked. Keep
tints around 0.15–0.20; higher and the control reads as paint, not glass.Spacing. Use
Spacing.concentric(in:inset:) for a shape nested inside another rather
than guessing a second literal, and .minimumHitArea() on any control
whose artwork is smaller than 44pt..readableContentWidth() (Spacing.readableContentWidth). A list that
pushes a detail splits on horizontalSizeClass == .regular into a
NavigationSplitView and keeps its NavigationStack in compact
(PeptideListView, TrainContainerView). A content-heavy sheet sets
.presentationSizing(.page); forms keep the default form size.AppAnimation (springSnappy, step,
quick, toast, , …); add a named token to
rather than tuning a spring inline. Animate
with and , which skip the
movement under Reduce Motion so no call site has to remember. Loops use
with a loop token
(, , ). A number
with only rolls if the state that
feeds it changes inside one of those. Loading placeholders are
; button press feedback is ..claude/skills/ carries two design skills that load automatically:
dna-transplant (pick the donor idiom before laying out a screen) and
atlas-screen (which donor each Atlas surface already uses, plus the token
rules). Anthropic's frontend-design skill pairs well with both and installs
via /plugin marketplace add anthropics/claude-code.
Run python3 scripts/design-lint.py --all to check all of it. It covers
eleven rules SwiftLint can't see — raw colour, fixed font sizes, stacked
glass materials, coloured halos behind glyphs, untargeted .animation,
hand-tuned animation curves,
placeholder copy, sub-44pt targets, off-grid spacing, faded ink,
unlabelled icon buttons, and rows VoiceOver reads as several stops. CI
fails on any error; warnings are printed for review. It's currently clean
on both counts — keep it that way rather than growing an exemption list.
It scans Peptide/App, Peptide/Features and Peptide/DesignSystem; the
widget and watch targets don't compile the design system, so they are out
of its scope.
The iOS app does not embed an Anthropic key. MealScannerService,
AIResearchService, and WeeklySummaryService each require a
configured proxy URL + shared secret — see
server/README.md for the deployment. Six
env-var slots are read from Info.plist (or the scheme env):
MEAL_SCANNER_ENDPOINT + MEAL_SCANNER_SECRETAI_RESEARCH_ENDPOINT + AI_RESEARCH_SECRETWEEKLY_SUMMARY_ENDPOINT + WEEKLY_SUMMARY_SECRETSet them via a gitignored Secrets.xcconfig and reference via
$(VAR_NAME) in Info.plist so they never land in source control.
The product is Atlas. The codebase carries legacy identifiers that are frozen for install/subscriber compatibility and should not be renamed:
Peptide (legacy).com.peptidesai.app — changing
it would orphan existing purchases.peptidex / peptidesai prefixes — changing them breaks deep
links and the widget/Watch handoff for installed users.Only user-facing copy and CFBundleDisplayName say "Atlas".
The bundled 208-peptide JSON is generated by a Python pipeline in scripts/peptide-dataset/.
xcodebuild test \
-project Peptide.xcodeproj \
-scheme Peptide \
-destination 'platform=iOS Simulator,name=iPhone 16,OS=latest'
PR checks run the same command via .github/workflows/pr-checks.yml
with SwiftLint, the design checker, and binary-size delta gating.
To look at the app without a local simulator, dispatch the Screenshots
workflow. It boots the app in demo mode on a macOS runner and captures every
tab in dark, light, and Accessibility XXXL, then uploads them as an artifact.
It builds the PeptideUICapture scheme so it stays independent of the unit
test target.
bundle exec fastlane beta builds and uploads. See
TESTFLIGHT_SETUP.md for the one-time signing
and App Store Connect API setup.
settleAnimationConstants.swiftAppAnimation.with(_:).appAnimation(_:value:).motionAwareLoop(_:autoreverses:isRunning:)breatherippleloadingSweep.contentTransition(.numericText())SkeletonBlockScalePressStyle