一键导入
action-writer
Create or update an Action in app/Actions following JournalOS conventions (validation, logging, queues, tests).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create or update an Action in app/Actions following JournalOS conventions (validation, logging, queues, tests).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Create or update a journal entry module (database, model, actions, views, controllers, API, docs, tests). Use when adding a new journal module or changing an existing module such as mood, health, or obligations.
Update the README.md file to list all available journal modules under the Features section with categorized, collapsible sections. Use when adding, removing, or reorganizing modules and keeping documentation in sync.
Update the README.md file to list all available journal modules under the Features section. Use when adding, removing, or reorganizing modules and keeping documentation in sync.
Update and complete JournalOS translation JSON files by running composer journalos:locale and fixing missing or empty translations in lang/*.json. Use when UI copy changes, new keys are added, or locale files are out of sync.
| name | action-writer |
| description | Create or update an Action in app/Actions following JournalOS conventions (validation, logging, queues, tests). |
This Skill helps you add or update an Action in app/Actions using the project conventions.
Use this Skill when:
execute().tests/Unit/Actions.composer journalos:unit.LogHealth, CreateBook, ResetWorkData).void).php artisan make:class Actions/ActionName --no-interaction
declare(strict_types=1); and the App\Actions namespace.final readonly class with constructor property promotion.$this->book), keep it final but not readonly, and declare a private property for the result.ModelNotFoundException when a user does not own a journal or entry.ValidationException::withMessages([...]) when values are invalid.TextSanitizer::plainText().DB::.low queue:LogUserAction::dispatch(...)->onQueue('low');
UpdateUserLastActivityDate::dispatch($user)->onQueue('low');
CheckPresenceOfContentInJournalEntry::dispatch($entry)->onQueue('low');
$this->entry->load('moduleHealth');
tests/Unit/Actions/ActionNameTest.php.RefreshDatabase and Queue::fake().for() on factories.ValidationException)ModelNotFoundException)low queuephp artisan test tests/Unit/Actions/ActionNameTest.php
composer journalos:unit.vendor/bin/pint --dirty