视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
annotate-source-files【文档与办公】Add PUT workflow annotations to source files using the correct language-specific comment prefix. Covers annotation syntax, skeleton generation via put_generate(), multiline annotations, .internal variables, and validation. Supports 30+ languages with automatic comment prefix detection. Use after analyzing a codebase and having an annotation plan, whe…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
添 PUT 工作流注於源檔,使 putior 可取結構化工作流數而生 Mermaid 圖。
analyze-codebase-workflow 析畢且有注計後乃用put_generate() 生骨乎(默:是)各語有特注前綴。以 get_comment_prefix() 得之。
library(putior)
# Common prefixes
get_comment_prefix("R") # "#"
get_comment_prefix("py") # "#"
get_comment_prefix("sql") # "--"
get_comment_prefix("js") # "//"
get_comment_prefix("ts") # "//"
get_comment_prefix("go") # "//"
get_comment_prefix("rs") # "//"
get_comment_prefix("m") # "%"
get_comment_prefix("lua") # "--"
得: 一串如 "#"、"--"、"//"、或 "%"。
行注與塊注:putior 察行注(
//、#、--)及 C 式塊注(/* */、/** */)中之注。JS/TS 行注與塊注皆掃。Python 三引號串(''' ''')不察——Python 注用#。
敗則: 若擴未識,檔語或不支。以 get_supported_extensions() 察全列。不支之語用 # 為約默。
用 put_generate() 以自察 I/O 建注樣。
# Print suggestions to console
put_generate("./src/etl/")
# Single-line style (default)
put_generate("./src/etl/", style = "single")
# Multiline style for complex annotations
put_generate("./src/etl/", style = "multiline")
# Copy to clipboard for pasting
put_generate("./src/etl/", output = "clipboard")
R 檔之例:
# put id:'extract_data', label:'Extract Customer Data', input:'customers.csv', output:'raw_data.internal'
SQL 之例:
-- put id:'load_data', label:'Load Customer Table', output:'customers'
得: 每源檔一或多注行,預填察函名與 I/O。
敗則: 若無薦生,檔或無可識 I/O 式。依碼解手書注。
編骨以添正標、連、元。
注語法參:
<prefix> put id:'unique_id', label:'Human Readable Label', input:'file1.csv, file2.rds', output:'result.parquet, summary.internal'
欄:
id(必):獨識,連節用label(必):圖顯之人讀述input:入檔或量逗列output:出檔或量逗列.internal 擴:標記憶量(腳本間未存)node_type:控 Mermaid 節形與類:
"input" — 體育場形 ([...]) 為數源與設"output" — 子程形 [[...]] 為生物"process" — 矩 [...] 為處理步(默)"decision" — 菱 {...} 為條件邏輯"start" / "end" — 體育場形 ([...]) 為入/終節附 node_type 之例:
# put id:'config', label:'Load Config', node_type:'input', output:'config.internal'
# put id:'transform', label:'Apply Rules', node_type:'process', input:'config.internal', output:'result.rds'
# put id:'report', label:'Generate Report', node_type:'output', input:'result.rds'
多行語法(為繁注):
# put id:'complex_step', \
# label:'Multi-line Label', \
# input:'data.csv, config.yaml', \
# output:'result.parquet'
塊注語法(唯 // 前綴之語:JS、TS、Go、Rust、C、C++、Java 等):
用 // 行注之語亦支 /* */ 與 /** */ 塊注中之 PUT 注。塊內用 * put 為行前:
/* put id:'init', label:'Initialize Config', output:'config.internal' */
/**
* put id:'process', \
* label:'Process Records', \
* input:'config.internal, records.json', \
* output:'results.json'
*/
function processRecords(config, records) {
// ...
}
JSDoc 式注尤宜於書工作流步附 API 文:
/**
* Transform raw sensor data into normalized readings.
* put id:'normalize', label:'Normalize Sensor Data', input:'raw_readings.json', output:'normalized.parquet'
*/
export function normalizeSensorData(readings: SensorReading[]): NormalizedData {
// ...
}
注:塊注注不支
#前綴之語(R、Python、Shell)或--前綴之語(SQL、Lua)。彼語唯用行注。塊起注不支跨行反斜續。
跨檔數流(以檔 I/O 連本):
# Script 1: extract.R
# put id:'extract', label:'Extract Data', output:'raw_data.internal, raw_data.rds'
data <- read.csv("source.csv")
saveRDS(data, "raw_data.rds")
# Script 2: transform.R
# put id:'transform', label:'Transform Data', input:'raw_data.rds', output:'clean_data.parquet'
data <- readRDS("raw_data.rds")
arrow::write_parquet(clean, "clean_data.parquet")
得: 注精附正 ID、標、I/O 欄映實數流。
敗則: 若 I/O 不定,用 .internal 擴於記憶中間,用明檔名於持數。
置注於檔首或相關塊之上。
位之例:
R 檔位例:
#!/usr/bin/env Rscript
# ETL Extract Script
#
# put id:'read_source', label:'Read Source Data', input:'raw_data.csv', output:'df.internal'
df <- read.csv("raw_data.csv")
# put id:'clean_data', label:'Clean and Validate', input:'df.internal', output:'clean.rds'
df_clean <- df[complete.cases(df), ]
saveRDS(df_clean, "clean.rds")
用 Edit 工具插注於既檔而不擾周圍碼。
得: 注插於每源檔之宜位。
敗則: 若注亂編之語法高亮,確注前綴合語。PUT 注為標注,當不影碼執行。
行 putior 驗以察注語法與連。
# Scan annotated files
workflow <- put("./src/", validate = TRUE)
# Check for validation issues
print(workflow)
cat(sprintf("Total nodes: %d\n", nrow(workflow)))
# Verify connections by checking input/output overlap
inputs <- unlist(strsplit(workflow$input, ",\\s*"))
outputs <- unlist(strsplit(workflow$output, ",\\s*"))
connected <- intersect(inputs, outputs)
cat(sprintf("Connected data flows: %d\n", length(connected)))
# Generate diagram to visually inspect
cat(put_diagram(workflow, theme = "github", show_source_info = TRUE))
# Merge with auto-detected for maximum coverage
merged <- put_merge("./src/", merge_strategy = "supplement")
cat(put_diagram(merged, theme = "github"))
得: 諸注皆析無訛。圖示連之工作流。put_merge() 補自察之隙。
敗則: 常驗患:
id:'name → id:'name'id:"name" → id:'name'id 於掃目內必獨\ 必為換行前末字put("./src/") 返期節數之數框idput_diagram() 生連之流圖(非諸離節).internal 量只為出,勿為跨檔入exclude 排之檔不現於工作流(如 put("./src/", exclude = "test_") 跳試助)id:'name'。雙引於串境致析患id 於掃範內必全獨。用如 <script>_<step> 之命約(如 extract_read、transform_clean).internal 為跨檔入:.internal 量只於本執行時存。本間傳數用持檔式(.rds、.csv、.parquet)為一本之出、他本之入# 或 Python 用 // 致注被視為碼。恆以 get_comment_prefix() 驗\ 終,下行必以注前綴始''' '''、""" """)。Python PUT 注恆用 #put() 與 put_diagram() 之本),本自之注現於所生圖。或從掃排此檔(見 generate-workflow-diagram 常陷),或勿於建本置 PUT 注analyze-codebase-workflow — 前置:生此技所循之注計generate-workflow-diagram — 下步:自注生終圖install-putior — 注前 putior 必裝configure-putior-mcp — MCP 工具供互注助