Community影像github.com

2016judea/leonardo

以李奧納多·達文西的方式繪圖——學習頁、筆記本對開頁、赭紅或銀尖筆習作、機械剖面圖、漩渦風暴——使用他的真實素材與頁面邏輯,以 make-art 引擎生成,並錨定於他十五幅實際(公共領域)畫作。當你提到「李奧納多」、「達文西」、「像他的筆記本」、「某物的手抄本頁面」、「像他的學習頁那樣畫這個」、「赭紅」、「銀尖筆」,或想要以他筆法繪製的設計、圖表或插圖時使用。也提供其筆記本(Richter 1883 年公共領域翻譯)的閱讀指南,用於查詢「李奧納多對於陰影/樹木/水說過什麼」。這是個 TASK 技能;引擎為 `make-art`。

leonardo 是什麼?

這是一個專業的 AI 代理技能,旨在重現李奧納多·達文西獨特的繪圖風格、素材與頁面邏輯。它基於對達文西十五幅真實畫作的細緻分析,定義了一套可量化的視覺語言,包括六種主要繪畫模式(墨水、手抄本、赭紅、銀尖筆、亞麻布與洪水),以及對陰影、筆觸、動態與紙張特性的精確規範。該技能的核心是使用 `make-art` 引擎,通過結構化的提示生成逼真的達文西風格頁面,而非單純的「文藝復興風格插圖」。它支援多種平台與工作流程,並且嚴格要求輸出必須標註為「以達文西手法製作」,而非其真跡。此外,技能還整合了對達文西筆記本(Richter 1883 年公共領域翻譯)的閱讀指南,能回答關於他對特定主題觀點的查詢。整個流程包含模式與比例選擇、主題撰寫(以研究列表而非單一圖畫)、結果審查與修正,以及最終的檔案管理。

相容平台~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/2016judea/brick-mortar-skills/tree/HEAD/skills/leonardo

Installed? Explore more 影像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

leonardo — 他的筆法、他的版面、他的素材

不是「文藝復興風格的素描」。李奧納多的畫作有其特定的素材語言和特定的頁面邏輯,這兩者皆基於 sheets/CREDITS.md 中列出的十五幅實際畫作(每幅畫的位置及其分析結果)。請執行 python3 scripts/fetch_sheets.py 一次,從維基共享資源下載這些畫作;它們是 plate.py 用來錨定風格的樣本。

請務必將輸出標註 為「以其手法製作」,絕不可標為他的真跡。在面向客戶的文案中,不得使用他的名字來推銷產品。

他的畫作實際上是什麼(可量化的語言)

透過畫作分析而來。prompts/ 中的每個 STEM 都是此列表的重新詮釋。

  • 頁面是工作頁,絕非一幅畫。 同一張紙上會以不同比例研究同一事物的多個面向:主要研究、剖面與切面、細節、標有 a b c 的小圖、以及一個放棄的、淺淡的初稿。沒有什麼是置中的。文字環繞著圖畫,有些線條帶有細長的引線指向圖形(胎兒頁、肩膀頁)。
  • 左撇子排線。 陰影是平行筆觸,方向為左上→右下(\\),線條緊密,順著形體彎曲,在形體轉離光線處更密集。他對形體後方的背景進行排線,以將其向前推(頭骨頁、維特魯威人的腿部)。交叉排線很少見。
  • 剖面與透明。 鋸成兩半的頭骨;像水果一樣剖開的子宮;移除機殼的機械圖。他解釋事物的方式就是將其切開。
  • 動態如髮絲。 水、雲、煙、風是數十條精細平行弧線形成的嵌套螺旋(〈大洪水〉)。頭髮與鬍鬚是長而韻律的波浪(杜林自畫像)。
  • 六種素材模式,且它們不會混合在同一張紙上:
    模式說明錨定畫作
    ink鋼筆 + 棕色鐵膽墨水,覆蓋於淺淡的黑粉筆之上,深陰影處使用棕色水彩渲染;用於解剖與機械頁面肩膀頁、胎兒頁、飛行器
    codex主要為文字的筆記本對開頁,圖表穿插於文字之中阿倫德爾手抄本開篇、大西洋古抄本 307v、維特魯威人
    chalk紅色粉筆(赭紅),單一顏料,暈塗法塑造杜林自畫像、畸形頭像
    silverpoint在有色底子(藍灰或粉米色)上使用金屬尖筆,以鉛白提亮婦女的手、馬匹
    linen筆刷 + 灰色蛋彩於處理過的亞麻布上,純色調,無線條坐姿衣褶
    deluge鋼筆 + 墨水 + 水彩渲染的暴風雨/風景,漩渦與鉤狀筆觸〈大洪水〉、1473 年托斯卡尼風景
  • 紙張本身也是一個角色。 奶油色至淺黃色的手工紙,邊緣老化成赭色,有黴斑、棕色污漬、破損的角落,以及來自背面的透印。真實畫作上還帶有帶皇冠的 ER 收藏家印章和庫存編號——這些是博物館的,不是他的;絕對不要要求產生這些,並檢查每張圖片是否憑空出現了一個(引擎曾在未經要求的情況下偽造了一位真實藝術家的簽名;請參閱 make-art)。
  • 鏡像文字。 字體小而均勻,從右向左書寫,使用與圖畫相同的墨水,以區塊形式呈現。在工作頁面(ink、codex)上,它佔據了大部分版面。赭紅、金屬尖筆和亞麻布研究則大多完全沒有文字——不要在達文西沒有書寫的地方添加。

步驟 1 — 在寫任何文字之前決定模式與長寬比

模式決定了整體外觀,因此是首要決定,通常由需求決定:機械或解剖 → ink;帶有大圖表的推理頁面 → codex;肖像、樹木、臉孔 → chalk;手部、動物、任何關於觸感與光線的主題 → silverpoint;布料 → linen;天氣、水、山谷 → deluge。

長寬比:3:4 是對開頁的預設值;橫幅頁面使用 4:3;codex 頁面一律為 3:4。他從不畫 16:9。

如果需求只是一個主題而無其他資訊,請提出一個問題: 是工作頁還是完成的研究?這將決定模式(ink/codex 與其他類別)、文字(有或無)以及同一張紙上研究的數量。其餘一切——長寬比、錨定畫作、尺寸——由我決定。

步驟 2 — 將主題撰寫為「多項研究」,而非一幅「圖畫」

提示詞由 STEM(依模式固定)+ SUBJECT(唯一的變數)+ NOTES(依模式而定)+ TAIL(固定)組成。scripts/plate.py 會將其組合起來,並附加該模式的錨定畫作:

python3 scripts/plate.py --mode ink --aspect 3:4 --size 2K \
  --out art/<slug>/candidates/r1/1-<name>.png \
  --subject "一張解剖…的研究頁:一個大的主要研究…;旁邊是三個較小的
             研究 — …;角落裡有一個小圖展示…,要點標示為 a, b, c。"
python3 …/plate.py --list-modes          # 列出模式、其預設文字及其錨定畫作
python3 …/plate.py … --dry-run           # 列印組合後的提示詞,不花費任何資源

有效的 SUBJECT 是同一張紙上的一系列研究,每個研究都有其比例和視角:「一個從左上方四分之三角度觀察 X 的主要研究,其中 Y 被切開;旁邊是三個較小的研究——單獨的 A、B 的剖面圖、從下方看的 C;角落裡有一個展示 Z 的小圖,要點標示為 a, b, c。」如果寫成單一圖畫描述(「桌上的濃縮咖啡機」),你會得到一幅畫在舊紙上的插圖,這是典型的失敗。

請先以 2K(約 $0.13)進行草稿;僅對最終選定的圖片花費 4K。引擎需要網路存取(make-art)。

步驟 3 — 將生成結果與錨定畫作對比,然後修正提示詞,而非修正圖片

請以全尺寸將每張生成結果與其錨定畫作並排比較。按發生頻率排序,實際上會出錯的三件事:

  1. 文字外洩。 當要求書寫「文藝復興義大利鏡像手寫體」時,引擎寫出了 「Reall bennifsance Italian mirror Italian mirror right to left」 ——我的指示被鏡像了,出現在一張其他方面都完美的銀尖筆頁面底部。當提示詞提到註釋是關於活塞時,它就用普通英文寫下了「Piston seal」和「Mechanical advantage」。絕對不要用引擎可以複製的詞彙來描述文字,也絕對不要讓 SUBJECT 中的名詞靠近標題位置。 prompts/notes-*.txt 現在規定該字跡刻意設計為無法辨識,且不構成任何語言的單字;這將每張 ink 頁面上的文字外洩從整個句子減少到兩三個半英文標籤,並在 none 模式下減少為零。因此:無文字的模式預設為 none;帶有 margin 註釋的 ink/codex 頁面需要檢查是否有英文外洩,如果出現任何可讀單詞,則需重新生成(或裁切)。外洩通常發生在小研究旁邊——請優先檢查那裡。
  2. 右手排線。 無論 STEM 如何規定,引擎產生 / 排線的頻率與 \\ 差不多。當頁面沒有可讀文字時,--flip 會將其水平翻轉,排線方向就會變為李奧納多的右手方向;但請檢查翻轉後的構圖是否仍然合理(帶有字母標記的圖表則不行——它的字母會反過來)。不要在提示詞中與此對抗;它不會聽。
  3. 卡通式樹葉。 最初用赭紅粉筆畫的白樺樹回來時變成了扇貝狀的雲朵葉片。赭紅模式的 STEM 現在規定樹葉是由快速短筆觸構成的色調團塊,絕非輪廓清晰的扇貝,並且 SUBJECT 應描述「作為柔和色調的葉片團塊」,而不是命名「葉片」。同樣的規則可以推廣:說出你想要的色調,而不是說出引擎已有刻板印象的物體名稱。

然後是標準的 make-art 檢查:邊緣(這些圖片的設計就是展示畫作自身的破損邊緣,置於空白背景上——這是設計的一部分,不是需要裁剪的邊框),以及角落是否有偽造的印章或簽名。

步驟 4 — 儲存

建立一個 art/<slug>/ 資料夾,內含一個 README、按等級編號的最終檔案、candidates/ 和 prompts/。plate.py 會在每張圖片旁邊寫入 <out>.prompt.txt,因此提示詞資料夾無需費心。

閱讀李奧納多(人設的另一半)

他的筆記本在 J.P. Richter 1883 年的編排下屬於公共領域(李奧納多·達文西筆記本,可從古騰堡計畫免費取得),按主題分為二十二卷。當任務是他對某事有什麼想法——關於陰影、樹木、水、如何學習、畸形、飛行——請閱讀該卷,引用段落編號,不要即興創作。以下段落直接關係到繪畫,並收錄於關於繪畫實踐的卷冊中(Richter 段落編號):

  • 522. 「畫畫時,要注意設定一條主線,你必須在整個作畫過程中觀察這條線;所有事物都應與這條主線的方向相關。」——這也適用於撰寫 SUBJECT 段落的唯一規則。
  • 502. 一位依賴記憶而非寫生的大師,是*「被極端的無知所恩寵,因為這些效果是無限的。」*——這就是為什麼這些頁面是「多項研究」而非單一圖畫。
  • 523. 玻璃板方法:用*「刷子或赭紅粉筆」在玻璃上畫畫,再描繪到紙上,「之後將其轉印到好紙上」——這是他自己對最終以撲粉法收尾的轉印過程的描述(628,畫板的配方:「然後撲粉並精細地勾勒出你的畫作。」*)。
  • 540. 「寫生時,要站在物體高度的三倍距離處。」
  • 529. 「鏡子如何是畫家的大師和導師」——將畫作與物體的鏡像進行對比。這就是為什麼 --flip 是合法的操作而非作弊。

如果一句著名的話不在筆記本中,那它就不是他的,直到你在裡面找到它為止。他不指導時的聲音——寓言、預言、要求報酬的信件——收錄在第 19–21 卷,比人們想像的更為乾澀和有趣。

參考資料

  • 引擎、標誌、貼上到磁碟的技巧、邊界檢查:make-art。基於單一參考圖進行擴展的方法:image-riff。此技能是第三層:一種基於模式的固定語言,而不是讀取貼上圖片的語言。
  • sheets/CREDITS.md — 十五幅錨定畫作的來源(均為公共領域,來自維基共享資源);sheets/meta.json 是 fetch_sheets.py 使用的原始維基共享資源記錄。

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

2016judea/ascii-charts

Build charts as plain Unicode-block text — bar, range, bullet, gap-bracket, star-histogram, heatmap, line, Venn, pie, donut and scatter — with a dependency-free Python script, for anywhere only monospace text survives (newsletter code blocks, Markdown, terminals, plain-text email, chat). Use when a chart has to embed as literal text instead of an image or a third-party chart service, or when you want a hand-made terminal look with no branding footer.

2016judea/buffett-checklist

Apply Warren Buffett's investment framework as a discipline lens when weighing a buy, hold, or sell decision — circle of competence, economic moat, owner earnings & intrinsic value, margin of safety, management/capital-allocation quality, and market psychology (Mr. Market, fear vs greed, temperament). Use when asked to "run this through Buffett", "what would Buffett say", "does this pass the moat test", "is this cheap enough", or for a second, more skeptical read on a name being evaluated or already held. This is a discipline overlay, not a replacement for a strategy — it applies the Buffett lens to how someone actually invests, rather than issuing generic advice.

2016judea/image-riff

Turn one or more reference images into original art in that reference's own visual language, then cut it to whatever surface it's for. Use when you paste or point at art and say "use this as the base image", "generate art from this", "riff on this", "some creative ideation with these images", "make me a channel banner / avatar / cover / plate", "wilder version of this", or want a spread of options off one piece of reference. This is the TASK skill; the engine is the `make-art` tool skill.

2016judea/mcp-stack

Which free MCP server or framework to reach for, and its traps — finance/gov data (SEC EDGAR, Yahoo, SAM.gov, USAspending), web research (Exa, Firecrawl, Crawl4AI, Jina reader), design/art/brand (Canva, Inkscape, Penpot, Figma, Orshot, Hugging Face image gen, vectorizing, charts), data/spatial (DuckDB spatial, live ArcGIS layers, OpenStreetMap/Overpass, Census, MapLibre), and ops (PostHog, iMessage, context7 docs). Use when making a social post, OG card, poster, logo/vector, chart, map, or brand asset; when querying parquet/geojson/duckdb or a city's open-data layer; when an MCP "needs authentication" or fails; or when asked "what tools do we have", "is there an MCP for X", "should we add X".

2016judea/records-request

Get a specific record out of a US government office by public-records request — "request the assessor's model", "file a data practices request", "FOIA this", "open records request", "can we just ask the county for it", "who do I write to at <county>", "chase that request", "did they ever answer". Covers checking the website first, finding the right office and statute, the carve-out paragraph that makes a request answerable instead of refused, web-form traps (hidden character caps, WAFs that reject apostrophes), chasing (there is usually no deadline), whether what comes back may be republished, and parsing multi-year tables without silent errors.

2016judea/sms-native-product

Build a product whose interface is text messages rather than an app or a website — "no app, no website", "they just text a number", "chat with our agent natively in Text Messages", "can we do this over text", "an SMS bot", "a Telegram bot", "make it a group chat", "minimum viable friction". Fires equally when it has already gone wrong — "my campaign got rejected", "our number is blocked", "the texts aren't arriving", "why do I need to register". Covers the gate that decides whether such a product can send at all (US A2P 10DLC registration, SHAFT content rules, permanent rejection codes), group MMS from code, what each channel can't do, an architecture that survives losing the channel, and guarding model-rewritten user content.

2016judea/vertical-market-agent

Build a chat agent that knows one industry in one metro better than any general model because it carries a precomputed digest of real public records (or a mined review corpus) and can pull live records mid-conversation — finding the moat, building a byte-stable substrate, enumerating what the records can't, the data traps that produce plausible wrong numbers, deterministic math in tools, measured prompt cost and cache TTL, shipping as an ad destination, an off-sector ending, and a precomputed spatial "what is this next to" layer. Use when building a vertical AI agent grounded in records rather than general knowledge.

相關技能