name: nathan-standards description: Nathan n8n-Jira 代理自动化系统的开发标准。涵盖 n8n 工作流、Python 模式和项目规范。 author: Joseph OBrien status: unpublished updated: ‘2025-12-23’ version: 1.0.1 tag: skill type: skill
Nathan 开发标准
在 Nathan 项目(一个 n8n-Jira 代理自动化系统)中进行开发的标准和模式。
何时使用
在以下情况时调用此技能:
- 创建或修改 n8n 工作流 JSON 文件
- 为 Nathan 助手或模板模块编写 Python 代码
- 设计 Webhook 命令契约
- 构建工作流注册表配置
- 通过 agent-os 实现规范驱动的功能
项目架构
Nathan 遵循分层架构:
外部服务 (Jira) <-- n8n 工作流 <-- Python 代理服务
(凭据) (Webhook 调用)
核心原则:n8n 拥有所有外部凭据。Python 服务使用共享密钥认证调用 n8n Webhook。
n8n 工作流标准
有关详细的工作流模式,请加载 references/n8n-workflow-patterns.md。
标准工作流结构
每个 Webhook 工作流必须遵循此模式:
Webhook --> 验证密钥 --> 操作 --> 响应 Webhook
| | |
v v v
未授权响应 (401) 错误响应 (500) 成功响应 (200)
必需节点模式
{
"id": "validate-secret",
"name": "验证密钥",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"parameters": {
"conditions": {
"conditions": [{
"leftValue": "={{ $json.headers['x-n8n-secret'] }}",
"rightValue": "={{ $env.N8N_WEBHOOK_SECRET }}",
"operator": { "type": "string", "operation": "equals" }
}]
}
}
}
响应格式
所有响应必须遵循此格式:
{ "success": true, "data": {...}, "status_code": 200, "error": null }
{ "success": false, "data": {}, "status_code": 500, "error": "message" }
JQL 表达式转义
在 JSON 中的 n8n 表达式内,请正确转义:
| 错误 | 正确 |
|---|---|
.map(x => "${x}") |
.map(x => '"' + x + '"') |
| `.join(’ | |
| ')` | `.join('\ |
| ')` | |
| `.replaceAll(’ | |
| ', ’ ')` | `.replaceAll('\ |
| ', ’ ')` |
Python 标准
有关详细模式,请加载 references/python-patterns.md。
模块结构
nathan/
helpers/ # 共享工具(工作流注册表等)
workflows/ # n8n 工作流 JSON + 每个类别的 registry.yaml
templating/ # YAML 到 JSON 模板引擎
scripts/ # 独立可运行脚本
代码风格
# 必需的导入模式
from __future__ import annotations
from typing import Any
from pathlib import Path
import logging
logger = logging.getLogger(__name__)
# 需要类型提示,使用 T | None 而不是 Optional[T]
async def trigger_workflow(url: str, params: dict[str, Any]) -> dict[str, Any]:
...
注册表模式
# registry.yaml
version: "1.0.0"
description: "注册表描述"
commands:
command_name:
endpoint: /webhook/endpoint-path
method: POST
required_params:
- param1
optional_params:
- param2
description: 此命令的作用
example:
param1: "value"
规范驱动开发
使用 agent-os 命令进行功能开发:
/shape-spec- 初始化和塑造规范/write-spec- 编写详细规范文档/create-tasks- 根据规范生成任务列表/orchestrate-tasks- 委托给子代理
规范位于 agent-os/specs/[spec-name]/ 目录下,包含:
spec.md- 功能规范tasks.md- 带复选框的实现任务orchestration.yml- 子代理委托配置
快速参考
常用命令
uv sync # 安装依赖
uv run pytest # 运行测试
uv run pytest path/to/test.py -v # 单个测试文件
uvx ruff check . # 代码检查
uvx ruff format . # 代码格式化
docker compose -f docker-compose.n8n.yml up -d # 启动 n8n
环境变量
| 变量 | 用途 |
|---|---|
N8N_WEBHOOK_SECRET |
Webhook 认证的共享密钥 |
N8N_API_KEY |
n8n 公共 API 密钥 |
JIRA_DOMAIN |
Jira Cloud 域名 |
JIRA_EMAIL |
Jira 账户邮箱 |
JIRA_API_TOKEN |
Jira API 令牌 |
文件命名规范
| 类型 | 规范 | 示例 |
|---|---|---|
| 工作流 JSON | kebab-case.json |
jira-get-ticket.json |
| Python 模块 | snake_case.py |
n8n_workflow_registry.py |
| 测试文件 | test_*.py |
test_parser.py |
| 注册表 | registry.yaml |
每个工作流类别 |