一键导入
add-memory-type
Create or update OpenMates user-facing memory/settings categories with minimal schemas, privacy review, app.yml metadata, i18n, docs, and tests
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create or update OpenMates user-facing memory/settings categories with minimal schemas, privacy review, app.yml metadata, i18n, docs, and tests
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Create a pull request from dev to main with proper formatting and draft release
Create a pull request from dev to main with proper formatting and draft release
Create a draft GitHub release with proper versioning and release notes
Create a well-structured task with smart field suggestions; GitHub Issues by default, Linear only for retained internal categories
Create a well-structured task with smart field suggestions; GitHub Issues by default, Linear only for retained internal categories
Start an iOS/macOS Apple app development or web-parity audit session — loads design rules, maps web sources to native code, supports Linux static audits, and verifies with Xcode when available
| name | add-memory-type |
| description | Create or update OpenMates user-facing memory/settings categories with minimal schemas, privacy review, app.yml metadata, i18n, docs, and tests |
| user-invocable | true |
| argument-hint | <appId?> <memoryId?> |
Use this skill when the user wants to create or update an OpenMates memory type or settings/memories category. OpenMates memories are user-facing, app-scoped encrypted data categories that users can manage in Settings > Apps and share with a mate only after per-conversation permission.
This is not for OpenCode memory, agent memory, browser storage, or generic notes.
Memory entries must be easy for normal users to fill out. Target 1-4 user-entered fields per memory entry.
Rules:
notes as an optional multiline field only when it meaningfully replaces several niche fields.added_date; it is auto-injected by backend/frontend metadata generation.Parse $ARGUMENTS as optional hints:
appId — parent OpenMates app directory, such as travel, books, health, or codememoryId — memory category id, snake_case preferred, such as favorite_books or communication_styleIf either value is missing, infer it during discovery or ask during the clarifying rounds. Do not invent a final app or ID without user confirmation.
Follow this structure closely. The user expects the same deliberate plan-before-build flow as focus mode authoring: existing-state research, clarification, internal research, external research, more clarification, draft, feedback, finalization, then implementation.
First inspect how memory types already exist and how the target app is structured.
Read or search these paths as relevant:
docs/user-guide/apps/settings-and-memories.mdbackend/shared/python_schemas/app_metadata_schemas.py (AppMemoryFieldDefinition)backend/apps/*/app.yml (settings_and_memories)backend/apps/{appId}/app.ymlfrontend/packages/ui/src/i18n/sources/settings/app_settings_memories.ymlfrontend/packages/ui/scripts/generate-apps-metadata.jsfrontend/packages/ui/src/types/apps.ts (MemoryFieldMetadata, SchemaPropertyDefinition)frontend/packages/ui/src/components/settings/AppSettingsMemoriesCreateEntry.sveltefrontend/packages/ui/src/components/settings/AppSettingsMemoriesCategory.sveltefrontend/apps/web_app/tests/mention-dropdown-settings-memory.spec.tsfrontend/apps/web_app/tests/cli-memories.spec.tsIdentify whether the request is:
Ask exactly one clear question per round and wait for the user's answer before continuing. Stop early only if the user explicitly says to skip clarification.
Use these topics unless the repo context reveals more urgent blockers:
single preference or a list of entries, and what are the 1-4 essential fields?If the user proposes more than 4 fields, challenge the scope before proceeding:
ask which fields are truly necessary for useful personalization and which can be
merged into optional notes or left out.
Based on the answers, search internal sources for relevant connected information and ideas.
Check:
settings_and_memories schemas in other appsUse GitHub Issues by default for tracker searches. Do not create or update an issue unless the user asks.
Search externally for ideas and best practices relevant to the requested memory type.
Use:
Keep this research practical. Extract only fields and privacy boundaries that improve the OpenMates memory contract. Do not copy large data models; OpenMates memory entries should stay minimal.
Ask exactly one clear question per round and wait for the user's answer before continuing.
These questions must be informed by internal and external research. Use them to resolve:
Present a concise draft and ask for feedback before editing product files.
The draft must include:
single or list)planning, development, or production)If the draft has more than 4 user-entered fields, include a short justification and ask the user to explicitly approve the extra complexity.
For updates, show a focused diff-style summary of what will change.
Wait for the user's feedback. Do not implement before this gate unless the user explicitly says to proceed without draft approval.
Incorporate feedback and show the final version briefly. Confirm any remaining tradeoffs, such as default-enabled behavior, field count, required fields, or sensitive data boundaries.
Update the current OpenMates metadata and i18n sources.
Primary implementation target:
backend/apps/{appId}/app.yml under settings_and_memories:Usually required i18n target:
frontend/packages/ui/src/i18n/sources/settings/app_settings_memories.ymlPotentially relevant docs/tests:
docs/user-guide/apps/settings-and-memories.mddocs/user-guide/apps/ or docs/architecture/apps/frontend/apps/web_app/tests/mention-dropdown-settings-memory.spec.tsfrontend/apps/web_app/tests/cli-memories.spec.tsRules:
id is snake_case.settings_and_memories, not legacy memory_fields or memory, for new work.type: single for one user preference object and type: list for repeatable entries.stage: development.icon_image only if an appropriate existing icon exists.is_title: true field for list readability when possible.is_subtitle: true only when it materially improves scanning.format: date, format: uri, or format: email only when the UI and validation benefit.multiline: true for optional notes, not for every text field.added_date; it is auto-injected.Run the smallest checks that prove the change.
Usually relevant:
cd frontend/packages/ui && npm run build:translations after i18n YAML editscd frontend/packages/ui && npm run generate-apps-metadata after app metadata editscd frontend/packages/ui && npm run validate:locales if translations changedFor user-facing memory behavior, propose the relevant E2E test path and use the repo test runner after deploy when running Playwright:
python3 scripts/tests.py run --spec mention-dropdown-settings-memory.spec.tspython3 scripts/tests.py run --spec cli-memories.spec.tsDo not run Playwright locally.
Use this structure for Step 6 and Step 8.
## Memory Type Draft
Name:
App:
Memory ID:
Type: single | list
Stage:
Description:
User-entered fields (target 1-4):
1. field_name — type — required/optional — purpose
Auto-generated fields:
- added_date (injected automatically; do not define manually)
Title/subtitle display:
Example entries:
- ...
How the AI may use it after permission:
How the AI may suggest saving it:
Non-goals:
Safety and privacy:
Open questions:
Before finishing, verify:
settings_and_memories:added_dateis_title: true for list entries when possibleis_subtitle: true field is actually useful for scanningsettings/app_settings_memories.ymlUse specify before implementation if the memory type changes persistence,
permissions, encryption, sharing, Directus schema, sync behavior, AI permission
dialogs, new API routes, or app skill behavior. Pure metadata/i18n additions can
usually follow this skill without a full spec.