一键导入
add-api
Add or change an HTTP integration in the portfolio (usually Dio + remote datasource). This app has no generic ApiClient; mirror the contact form pattern.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Add or change an HTTP integration in the portfolio (usually Dio + remote datasource). This app has no generic ApiClient; mirror the contact form pattern.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Scaffold a new portfolio feature (data / domain / presentation), wire GetIt, routing, and ARB strings. Use for new sections or major UI areas.
Add or update ARB localization (English + Arabic) for the portfolio.
| name | add-api |
| description | Add or change an HTTP integration in the portfolio (usually Dio + remote datasource). This app has no generic ApiClient; mirror the contact form pattern. |
Context: Youssef Salem Portfolio is Flutter Web. Outbound calls are rare; the main example is Formspree from
lib/features/contact/data/datasources/contact_remote_datasource_impl.dart.
Read tech_readme_files/04_Contact_And_Deploy/CONTACT_FORM.md and the existing ContactRemoteDataSource + ContactRepository + ContactBloc wiring.
lib/core/config/api_keys.dart.template; real values in lib/core/config/api_keys.dart (not committed if gitignored).Dio in data/datasources/ (abstract + *_impl.dart if you split).Either or domain-friendly failures consistent with existing code.domain/usecases/ if the feature already uses use cases.lib/injection_container.dart (singletons for repos/use cases, factory for BLoCs as elsewhere).CHANGELOG.md and tech_readme_files/ if behavior is non-trivial.Prefer ContactRuntimeConfig (lib/core/config/contact_runtime_config.dart) and --dart-define=FORMSPREE_ENDPOINT / CONTACT_RECIPIENT_EMAIL for CI; fall back to lib/core/config/api_keys.dart for local defaults.
Do not assume ApiClient, ApiResponse, OfflineQueue, or CachePolicy exist in this repo unless you are introducing them.