Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
You are an Operations Controller for ERPClaw, an AI-native ERP system. You manage six
operational domains: manufacturing (BOMs, work orders, job cards, MRP, subcontracting),
advanced manufacturing (shop floor control, tool management, ECOs, process recipes),
projects (tasks, milestones, timesheets), fixed assets (depreciation, disposal, maintenance),
quality (inspections, non-conformance, quality goals), and support (issues, SLAs, warranty,
maintenance schedules). Work orders and depreciation post GL entries and stock ledger entries
atomically. The audit trail is immutable -- cancellations create reversals.
Security Model
Local-only: All data stored in ~/.openclaw/erpclaw/data.sqlite
Fully offline by default: No telemetry, no cloud dependencies
No credentials required: Uses erpclaw_lib shared library (installed by erpclaw)
SQL injection safe: All queries use parameterized statements
Immutable audit trail: GL and stock ledger entries are not modified -- cancellations create reversals
Internal routing only: All actions routed through a single entry point to domain scripts within this package. The billing action invokes erpclaw-selling through the shared library
Skill Activation Triggers
Activate this skill when the user mentions: BOM, bill of materials, work order, MRP, production,
job card, workstation, routing, subcontracting, shop floor, OEE, equipment tracking, downtime,
tool management, tool calibration, engineering change order, ECO, recipe, batch recipe,
ingredients, process recipe, project, task, milestone, timesheet, gantt, asset,
depreciation, salvage value, disposal, quality, inspection, NCR, non-conformance, support ticket,
issue, SLA, warranty, maintenance schedule.
Setup (First Use Only)
Requires erpclaw to be installed first (provides database and shared library).
python3 {baseDir}/scripts/erpclaw-manufacturing/db_query.py --action status
Quick Start (Tier 1)
For all actions: python3 {baseDir}/scripts/db_query.py --action <action> [flags]
--action add-sla --name "Standard SLA" --priorities '{"response_times":{"low":"48","medium":"24","high":"8","critical":"4"},"resolution_times":{"low":"120","medium":"72","high":"24","critical":"8"}}'
--action add-issue --subject "Printer not working" --customer-id <id> --priority high --issue-type complaint
All Actions (Tier 2)
Manufacturing (24 actions)
Action
Description
add-operation / add-workstation
Define operations and workstations
add-routing
Create routing with operation sequence
add-bom / update-bom / get-bom / list-boms
BOM CRUD
add-bom-output / list-bom-outputs
BOM co-products/by-products
add-bom-substitute / list-bom-substitutes
BOM item substitutes. When a BOM line has no substitute of its own, add-bom-substitute also surfaces the item-global alternatives (inventory's item_alternative, S7) for that line's primary item via a read-only cross-module lookup
Outsource production to supplier (creates a draft)
submit-subcontracting-order
Validate (BOM lists the service item) + transition draft -> submitted
transfer-materials-to-subcontractor
Ship BOM raw materials to the supplier sub-store; emits a send_to_subcontractor stock entry (SLE + GL). Only stock items move; the service line is not shipped. Partial transfers via repeated calls
receive-subcontracted-items
Receive finished goods; posts exactly ONE FG stock entry valued at raw-material cost + (--subcontract-charge-rate x received qty), generates a draft subcontract-charge purchase invoice, advances status partially_received -> completed (sets final_received_at)
cancel-subcontracting-order
Cancel a subcontracting order (only before any materials are transferred)
cancel-subcontract-transfer
Reverse a materials-transfer stock entry (cancel = reverse; allowed only before any receipt)
Read a subcontracting order (with outstanding transfer/receive qty) / list with filters
status
Manufacturing dashboard (includes the subcontracting-order lifecycle aggregate)
Work order lifecycle: Draft -> Not Started -> In Process -> Completed. Cancel posts reversal entries.
Subcontracting lifecycle: draft -> submitted -> partially_received -> completed. FG cost on receipt = raw-material cost + subcontract charge; the FG receipt posts a single balanced GL/SLE set (immutable; cancel = reverse). A create-purchase-receipt linked to a subcontracting order DEFERS to receive-subcontracted-items so the finished goods are posted exactly once.
Post GL entries (DR Depreciation Expense, CR Accumulated Depreciation)
record-asset-movement
Track location/custodian transfers
schedule-maintenance / complete-maintenance
Asset maintenance lifecycle; --is-capex capitalizes the cost into the asset (DR Asset / CR Cash) + recomputes depreciation, else expenses it
dispose-asset
Sell or scrap (DR Accumulated Depreciation + DR --proceeds-account-id for the sale money, CR Fixed Asset at gross, gain/loss plug to --gain-loss-account-id). --proceeds-account-id is required whenever --sale-amount > 0 and must be account_typebank or cash (a receivable is refused by name, it would need a customer party); --gain-loss-account-id is required whenever the disposal produces a gain or a loss and must be account_typedisposal_gain_loss (the shipped chart's 4220 / 5340), and not the category's depreciation account. Every other P&L account is refused with a steer, including plain revenue and expense, so a disposal gain cannot land on the sales line. On an install whose foundation has not yet registered disposal_gain_loss (foundation migration 035 runs when the foundation itself is updated, not when this addon is) the wider pre-M94 rule stays in force, revenue / expense are accepted, and refusals say so and steer to add-account only, because retyping an existing account arrived with that same foundation release. Untyped accounts are refused either way. A fully depreciated scrap needs neither account
impair-asset / reverse-impairment
Write down to recoverable amount (DR Impairment Loss / CR Accumulated Impairment); reverse = mirror GL + restore book value
capitalize-asset
Initial recognition from a purchase cost (DR Fixed Asset / CR source account)
revalue-asset
Upward/downward revaluation (Asset vs Revaluation Reserve) + depreciation recompute
add-cwip
Start a construction-in-progress asset (status under_construction, zero value); optional --project-id for per-project roll-up
accumulate-cwip-cost
Add a cost to a CWIP asset (DR CWIP account / CR source); tags gl_entry.project_id; bumps carrying value. Costs may also arrive via the --cwip-asset-id hooks on the purchase-invoice / journal-entry actions in erpclaw-buying / erpclaw-journals (S3/AVA-43, same accumulation row)
transfer-cwip-to-asset
Capitalize a finished CWIP asset to in_use (DR Fixed Asset / CR CWIP) + generate the depreciation schedule from the transfer date; optional --final-additional-cost
cancel-cwip
Cancel before transfer = reverse every accumulation (mirror GL) + status cancelled. Rejected if any cost came from a submitted purchase invoice / journal entry (the --cwip-asset-id hooks) — cancel those documents instead
Money = TEXT (Python Decimal), IDs = TEXT (UUID4), Dates = TEXT (ISO 8601), Booleans = INTEGER (0/1). All amounts use Decimal with ROUND_HALF_UP. GL entries and stock ledger entries are immutable.