Coding
PromptBeginner5 minmarkdown
Nano Banana Pro
Agent skill for nano-banana-pro
6
- `src/`: アプリ本体(`handlers/` API・Web・Cron、`services/` RSS・DB・AI・Discord・Logger、`templates/` HTML、`types/` 型定義、`index.ts` エントリ)。
Sign in to like and favorite skills
src/: アプリ本体(handlers/ API・Web・Cron、services/ RSS・DB・AI・Discord・Logger、templates/ HTML、types/ 型定義、index.ts エントリ)。tests/: Bun のユニットテスト(*.test.ts)。migrations/: D1 用 SQL マイグレーション。scripts/: 開発補助スクリプト(例: debug-summary.ts)。wrangler.toml(Cloudflare Workers 設定)、tsconfig.json、package.json、.dev.vars(ローカル環境変数)。npm run dev: Wrangler でローカル起動(Workers + D1 バインド)。npm run deploy: 本番へデプロイ。npm test / bun test: テスト実行。npm run test:watch で監視実行。npm run lint: ESLint 実行。npm run type-check: TypeScript 型検査。npm run db:create(D1 作成)、npm run db:migrate(マイグレーション適用)。bun run scripts/debug-summary.ts(要約ロジック単体確認)。bun run lint(ESLint)bun run type-check(TypeScript 型検査)bun test(ユニットテスト)bun test --watch でテストを常時実行し、素早くフィードバックを得る。ci.yml)と同一。ローカルで green なら CI も原則通過する。bun run lint -- --fix で自動修正を適用できる。lint / type-check / test を自動実行して、失敗コミットを防ぐ。bun add -D husky(または npm i -D husky)npm run prepare(package.json に設定済み).husky/pre-commit は用意済み。権限がない場合は chmod +x .husky/pre-commitbun run precommit:check(= bun run lint && bun run type-check && bun test)bun -v)。未インストールの環境では hook がエラー終了する。strict: true)。インデント 2 スペース、末尾セミコロン省略可。kebab-case(例: ai-summarizer.ts)。クラス: PascalCase。変数/関数: camelCase。定数: UPPER_SNAKE_CASE。@/* パスエイリアス使用可(tsconfig.json)。Logger を使用(console.log は避ける)。環境値は src/types/index.ts の型に沿って参照。bun:test。モックは mock を使用。tests/**/**.test.ts、対象モジュールと同名で配置。bun test --coverage(カバレッジ任意、主要サービス/ハンドラは網羅)。feat:, fix:, docs:, test:, chore:)。fix: Discord 通知の Invalid time value を修正、test: add RSSFetcher invalid XML cases。curl 結果)を含める。コミット/PR 前に必ず以下をローカルで green にする: bun run lint、bun run type-check、bun test。.dev.vars(ローカル)に置き、コミットしない。例:
GEMINI_API_KEY=... DISCORD_WEBHOOK_URL=... ADMIN_TOKEN=...
secret/vars を利用(例: wrangler secret put GEMINI_API_KEY)。wrangler.toml の binding: DB を使用。マイグレーションは migrations/ を単一責務で追加。POST /api/cron/update-feeds、POST /api/discord/test。Authorization: Bearer ${ADMIN_TOKEN} を必須化。curl -H "Authorization: Bearer $ADMIN_TOKEN" -X POST http://127.0.0.1:8787/api/cron/update-feeds。src/config/feeds.ts に集約し、id/url/format(rss|atom|auto)/displayName/color/enabled を宣言。追加は1行で完結。RSSFetcher)/処理(CronHandler)/通知(DiscordNotifier)/表示定義(feeds.ts)を分離。auto 指定時はXMLから自動判定。Promise.allSettled で並列実行し、失敗は局所化して継続。件数は perSourceCounts としてログ化。fetchAWSFeed 等)は廃止し、fetchById/fetchMany に統一。テスト・スクリプトは FeedSource の id を指定して呼び出す。FeedSource を設定から導出し、Article.feed_source などに適用。src/config/feeds.ts の FEEDS 配列にエントリを1つ追加。npm run type-check と bun test を実行して型とテストを確認。bun run scripts/debug-summary.ts で取得・要約・通知の流れを確認。