一键导入
transmissions-processor
Guide for creating custom Transmissions processors with factory registration for core and remote development
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Guide for creating custom Transmissions processors with factory registration for core and remote development
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | transmissions-processor |
| description | Guide for creating custom Transmissions processors with factory registration for core and remote development |
This skill guides you through creating custom processors to extend Transmissions functionality, helping you choose between core and remote development.
First check for an existing processor that can be used in src/processors. If the name is a reasonable match for the required functionality, check the processor's signature in comments in the code.
Choose your development path:
Use when: Building reusable processors, contributing to framework
Use when: Processor is app-specific, maintaining separation
Ask the user:
MyProcessor)my-group, or use existing like util, text, flow)src/processors/) or Remote (app-specific)?Execute based on chosen path:
# Copy example group
cp -r src/processors/example-group src/processors/{GROUP_NAME}
# Rename processor file
mv src/processors/{GROUP_NAME}/Example.js src/processors/{GROUP_NAME}/{PROCESSOR_NAME}.js
# Rename factory
mv src/processors/{GROUP_NAME}/ExampleProcessorsFactory.js src/processors/{GROUP_NAME}/{GROUP_NAME}ProcessorsFactory.js
# List created files
ls -la src/processors/{GROUP_NAME}/
# Just create new processor in existing group
# Example: adding to util/
touch src/processors/util/{PROCESSOR_NAME}.js
# Create in app's processor directory
mkdir -p ~/hyperdata/trans-apps/apps/{APP_NAME}/processors
# Copy example
cp src/processors/example-group/Example.js ~/hyperdata/trans-apps/apps/{APP_NAME}/processors/{PROCESSOR_NAME}.js
# Copy factory
cp src/processors/example-group/ExampleProcessorsFactory.js ~/hyperdata/trans-apps/apps/{APP_NAME}/processors/{PROCESSOR_NAME}Factory.js
Edit the processor file:
Basic structure:
// src/processors/{GROUP}/{ PROCESSOR_NAME}.js
import logger from '../../utils/Logger.js'
import ns from '../../utils/ns.js'
import Processor from '../../model/Processor.js'
/**
* @class {PROCESSOR_NAME}
* @extends Processor
* @classdesc
* {PROCESSOR_DESCRIPTION}
*
* ### Processor Signature
* #### __*Settings*__
* * **`ns.trn.settingName`** - Description
*
* #### __*Input*__
* * **`message.field`** - Expected input
*
* #### __*Output*__
* * **`message.result`** - Output field
*/
class {PROCESSOR_NAME} extends Processor {
constructor(config) {
super(config)
}
async process(message) {
logger.debug(`{PROCESSOR_NAME}.process`)
// Skip if spawning completion
if (message.done) {
return this.emit('message', message)
}
// Get configuration
const setting = super.getProperty(ns.trn.settingName, 'default')
// Process message
// YOUR LOGIC HERE
// Emit result
return this.emit('message', message)
}
}
export default {PROCESSOR_NAME}
Edit factory file to register processor:
For new group:
// src/processors/{GROUP}/{GROUP}ProcessorsFactory.js
import logger from '../../utils/Logger.js'
import ns from '../../utils/ns.js'
import {PROCESSOR_NAME} from './{PROCESSOR_NAME}.js'
class {GROUP}ProcessorsFactory {
static createProcessor(type, config) {
if (type.equals(ns.trn.{PROCESSOR_NAME})) {
return new {PROCESSOR_NAME}(config)
}
// Add more processors here
return false
}
}
export default {GROUP}ProcessorsFactory
For existing group: Add to existing factory file:
import {PROCESSOR_NAME} from './{PROCESSOR_NAME}.js'
// In createProcessor method:
if (type.equals(ns.trn.{PROCESSOR_NAME})) {
return new {PROCESSOR_NAME}(config)
}
For core processors only:
Edit src/engine/AbstractProcessorFactory.js:
// Add import at top
import {GROUP}ProcessorsFactory from '../processors/{GROUP}/{GROUP}ProcessorsFactory.js'
// Add to createProcessor method
static createProcessor(type, app) {
// ... existing processors ...
var processor = {GROUP}ProcessorsFactory.createProcessor(type, app)
if (processor) return processor
// ... rest of factories ...
}
Create test app:
# Create test app
mkdir -p src/apps/test/{PROCESSOR_NAME}-test
# Create transmissions.ttl
cat > src/apps/test/{PROCESSOR_NAME}-test/transmissions.ttl << 'EOF'
@prefix : <http://purl.org/stuff/transmissions/> .
:test a :EntryTransmission ;
:pipe (:setup :test-processor :verify) .
:setup a :SetField ;
:settings [
:field "testInput" ;
:value "test-value"
] .
:test-processor a :{PROCESSOR_NAME} ;
:settings [
:settingName "test-setting"
] .
:verify a :ShowMessage .
EOF
Run test:
./trans test.{PROCESSOR_NAME}-test -v
See templates/processor-template.md for:
See templates/factory-guide.md for:
See templates/testing.md for:
Processor not found:
Type mismatch:
ns.trn.{PROCESSOR_NAME} matches transmissions.ttltype.equals() not ===Import errors:
After basic processor creation:
process() methodsrc/processors/example-group/Example.jssrc/model/Processor.jssrc/engine/AbstractProcessorFactory.jsdocs/manual/dev/processors.md