بنقرة واحدة
temporal-signal
Add a
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Add a
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Develop IntelliJ Platform plugins (IDEA / PhpStorm / etc.) following the official JetBrains SDK guidelines. Use when the user asks to add an extension point, service, action, listener, inspection, index, tool window, notification, run configuration, or any other platform-level plugin feature. This is the general platform skill — for this project's specific conventions also consult /kotlin-dev.
Write new Kotlin code for this IntelliJ Platform plugin following the project's common/languages architecture, Extension Point pattern, and performance/naming rules. Use whenever the user asks to "add a Kotlin class", "implement an inspection", "add an action", "create a service", "write a completion provider", or any new plugin-side feature.
Write JUnit 4 + IntelliJ Platform Test Framework tests in Kotlin for this plugin (inspections, indexes, endpoint providers, EP implementations, PSI helpers, run configs). Use when the user asks to "add a test", "write a test", "cover X with tests", or "bootstrap the test suite".
Scaffold an official Temporal PHP Activity (interface + implementation) using
Scaffold invocation of a child Temporal workflow from a parent workflow using ChildWorkflowOptions. Use when the user asks to "call a child workflow", "invoke child workflow", or "start child workflow".
Add a
| name | temporal-signal |
| description | Add a |
Add a signal handler to a workflow interface. Signals are fire-and-forget
messages sent to a running workflow; they must return void and should only
update internal state (the workflow loop will react via Workflow::await() /
polling state).
cancelOrder)<Workflow>Interface.phpAdd the method to the interface, alongside the existing #[WorkflowMethod]:
use Temporal\Workflow\SignalMethod;
#[SignalMethod(name: '{{signalName}}')]
public function {{signalName}}({{args}}): void;
<Workflow>.phpImplement the handler — store arguments on the workflow instance; do not perform activities/I/O directly from a signal.
private array $pendingSignals = [];
public function {{signalName}}({{args}}): void
{
$this->pendingSignals[] = [{{argNames}}];
}
Then in the main #[WorkflowMethod] loop, await/drain:
yield Workflow::await(fn () => $this->pendingSignals !== []);
$next = array_shift($this->pendingSignals);
void — returning anything else is a contract
violation and will surface as a non-deterministic workflow.#[SignalMethod(name: '...')] to decouple the external signal name from
the PHP method name (otherwise the method name is used).$workflow = $workflowClient->newWorkflowStub({{Workflow}}Interface::class);
$run = $workflowClient->start($workflow, /* args */);
$workflow->{{signalName}}({{argNames}}); // or: $workflowClient->signalWorkflow(...)