From 74ccfa05967a05a00636c31402a78c8d55f6b5c3 Mon Sep 17 00:00:00 2001
From: Meng To <1065452+MengTo@users.noreply.github.com>
Date: Sat, 1 Aug 2026 23:02:00 +0800
Subject: [PATCH 1/4] Add GitHub project publishing skill
---
.../codex/publish-project-to-github/SKILL.md | 228 ++++++++++++++++++
.../agents/openai.yaml | 4 +
.../assets/README-template.md | 43 ++++
.../references/github-pages.md | 116 +++++++++
.../scripts/audit_public_project.sh | 110 +++++++++
5 files changed, 501 insertions(+)
create mode 100644 agent-skills/codex/publish-project-to-github/SKILL.md
create mode 100644 agent-skills/codex/publish-project-to-github/agents/openai.yaml
create mode 100644 agent-skills/codex/publish-project-to-github/assets/README-template.md
create mode 100644 agent-skills/codex/publish-project-to-github/references/github-pages.md
create mode 100755 agent-skills/codex/publish-project-to-github/scripts/audit_public_project.sh
diff --git a/agent-skills/codex/publish-project-to-github/SKILL.md b/agent-skills/codex/publish-project-to-github/SKILL.md
new file mode 100644
index 0000000..ce64464
--- /dev/null
+++ b/agent-skills/codex/publish-project-to-github/SKILL.md
@@ -0,0 +1,228 @@
+---
+name: publish-project-to-github
+description: Package a finished local project into an intentional GitHub repository, create a strong README and visual preview, push it safely, configure a public GitHub Pages URL when the project is compatible, and verify the deployed result. Use when a user asks to upload, publish, open-source, share, or turn a local HTML/CSS/JavaScript experiment or small web project into a documented GitHub repository with a live demo.
+---
+
+# Publish Project to GitHub
+
+Turn a finished local project into a clean public artifact. Treat repository creation, public visibility, and deployment as separate gates; a successful push is not proof that the public site works.
+
+## Deliverables
+
+Produce the applicable items:
+
+- a narrowly scoped Git repository
+- an intentional public or private GitHub repository
+- a project-specific `README.md`
+- a real preview image when the project is visual
+- a portable build or remix prompt when it adds value
+- a configured GitHub Pages site for compatible web projects
+- post-push and post-deploy read-back
+
+## 1. Resolve scope and authority
+
+Inspect the local project, repository state, remotes, and local instructions before writing.
+
+Confirm or safely infer:
+
+- the exact project directory and intended files
+- repository name and owner
+- whether the target should be public or private
+- whether an existing repository must be updated or a new one created
+- whether the user wants a live website, source hosting only, or both
+
+Creating a public repository is authorized only when the user explicitly asks for public sharing, a public URL, open source, or equivalent. Otherwise ask for visibility before creating it.
+
+Never force-push, overwrite an existing remote, change repository visibility, or replace an existing Pages configuration without exact authorization.
+
+## 2. Audit before packaging
+
+Run the bundled audit from the project root:
+
+```bash
+bash /path/to/publish-project-to-github/scripts/audit_public_project.sh .
+```
+
+Then inspect findings rather than treating the script as a substitute for judgment.
+
+Block publication on:
+
+- API keys, tokens, private keys, passwords, or `.env` files
+- personal data or private client information
+- absolute local filesystem paths required at runtime
+- unlicensed or private assets
+- missing runtime files
+- unclear ownership of a repository name that already exists
+
+Review all external runtime URLs and generated assets. State any required network dependency in the README.
+
+Inspect the existing license before publishing. If the user explicitly wants others to reuse or modify the project and no license exists, ask which license to add rather than inventing one. If the goal is only public viewing, a missing license does not block deployment, but report that reuse rights are not granted explicitly.
+
+## 3. Choose the packaging model
+
+### Clean existing repository
+
+Use the existing checkout when its remote, history, and tracked files match the intended public project. Stage only the requested files.
+
+### Mixed or unrelated workspace
+
+Create a clean project directory or sibling checkout when the source workspace contains unrelated experiments, deletions, private files, or history. Copy only the intended runtime files. Do not publish an entire mixed folder for convenience.
+
+### Existing public repository
+
+Inspect its default branch, Pages source, README, license, and remote state before changing it. Pull or reconcile deliberately; never hide divergence with a force push.
+
+For a static one-file experiment, prefer this minimal shape:
+
+```text
+project-name/
+├── index.html
+├── README.md
+├── PROMPT.md # optional
+├── assets/ # optional previews or runtime assets
+└── .gitignore
+```
+
+## 4. Build the repository presentation
+
+Write the README from the real project. Use `assets/README-template.md` as a starting structure, not as final copy.
+
+Include:
+
+- project name and one concrete sentence explaining the experience
+- a live demo link near the top and, when useful outside GitHub, a repository source link
+- a screenshot or short GIF captured from the actual running project
+- key interactions or features
+- a concise explanation of the architecture and unusual implementation choices
+- accurate local run instructions
+- project structure
+- runtime dependencies and network requirements
+- originality, attribution, or non-affiliation notes when references inspired the work
+
+For agent-built projects, optionally add official links and a portable prompt showing how to rebuild or remix the project with relevant coding agents. Verify current official URLs before publishing.
+
+Avoid generic claims such as “cutting-edge,” “stunning,” or “production-ready.” Prefer specific craft and behavior.
+
+## 5. Verify locally
+
+Use the project's real runtime rather than opening module-based sites directly from disk.
+
+For static sites:
+
+```bash
+python3 -m http.server 4173 --bind 127.0.0.1
+```
+
+Check:
+
+- initial render
+- the primary interaction path
+- the primary interaction's return, close, or recovery path
+- a normal desktop viewport and a narrow viewport around `390 × 844` when the project is responsive
+- every README run command
+- missing files and 404s
+- console errors and warnings
+- relative URLs under a repository subpath such as `/project-name/`
+
+Use the browser requested by the user or required by repository instructions. Capture the README preview from this verified runtime.
+
+## 6. Commit and create the repository
+
+Require GitHub CLI and an authenticated session:
+
+```bash
+gh --version
+gh auth status
+```
+
+Check name availability before creation:
+
+```bash
+gh repo view OWNER/REPOSITORY
+```
+
+Initialize and commit only the intended package:
+
+```bash
+git init -b main
+git add -- README.md index.html .gitignore
+git diff --cached --check
+git commit -m "Publish PROJECT_NAME"
+```
+
+Add optional files explicitly rather than replacing the narrow `git add` with `git add -A` in a mixed tree.
+
+Create and push only after the audit and local verification pass:
+
+```bash
+gh repo create OWNER/REPOSITORY \
+ --public \
+ --source=. \
+ --remote=origin \
+ --push \
+ --description "CONCRETE_DESCRIPTION"
+```
+
+Use `--private` unless public visibility is authorized. When the repository already exists, configure its remote explicitly and push without recreating it.
+
+## 7. Configure the public site
+
+Classify the project before enabling Pages:
+
+- **Static root:** publish `main` and `/`.
+- **Static docs folder:** publish `main` and `/docs`.
+- **Framework build:** use the framework's supported Pages output and the current official GitHub Actions guidance.
+- **Server, database, or private runtime:** GitHub Pages is not compatible; explain the blocker and choose another host only with user authorization.
+
+Read `references/github-pages.md` before changing Pages settings. Set the repository homepage to the resulting public URL and add a small set of accurate discovery topics.
+
+## 8. Verify external state
+
+Read back all external changes:
+
+```bash
+gh repo view OWNER/REPOSITORY \
+ --json nameWithOwner,url,visibility,description,homepageUrl,defaultBranchRef
+
+gh api repos/OWNER/REPOSITORY/pages
+gh api repos/OWNER/REPOSITORY/pages/builds/latest
+```
+
+Wait until the Pages build reports `built` or fails concretely. Then open the public URL and verify:
+
+- HTTP navigation succeeds at the final HTTPS URL
+- the expected project UI appears
+- one representative interaction changes the main application state and returns or closes cleanly
+- assets resolve under the repository subpath
+- no browser errors or warnings appear
+- README links resolve
+
+Keep the public page open for the user when it is the requested deliverable.
+
+## 9. Hand off exact results
+
+Return:
+
+- repository URL
+- public site URL, when created
+- commit and branch
+- Pages build status
+- checks actually run
+- any dependency, licensing, or deployment limitation still present
+
+Distinguish “pushed,” “Pages configured,” “Pages built,” and “live site verified.” Never collapse them into one success claim.
+
+## Failure rules
+
+- Preserve unrelated dirty work and history.
+- Do not publish secrets and remove them from history before any push if they were committed.
+- Do not guess a GitHub owner or existing repository target when local context cannot resolve it.
+- Do not claim a `file://` preview proves GitHub Pages compatibility.
+- Do not use a successful CLI exit as the only verification of an external write.
+- Do not silently substitute another host when GitHub Pages is incompatible.
+
+## Resources
+
+- Run `scripts/audit_public_project.sh` before packaging or publishing.
+- Read `references/github-pages.md` before configuring or debugging Pages.
+- Copy `assets/README-template.md` and rewrite every placeholder from project evidence.
diff --git a/agent-skills/codex/publish-project-to-github/agents/openai.yaml b/agent-skills/codex/publish-project-to-github/agents/openai.yaml
new file mode 100644
index 0000000..4c050fb
--- /dev/null
+++ b/agent-skills/codex/publish-project-to-github/agents/openai.yaml
@@ -0,0 +1,4 @@
+interface:
+ display_name: "Publish Project to GitHub"
+ short_description: "Package, publish, and verify a public project"
+ default_prompt: "Use $publish-project-to-github to package this local project, publish it safely, and verify its public URL."
diff --git a/agent-skills/codex/publish-project-to-github/assets/README-template.md b/agent-skills/codex/publish-project-to-github/assets/README-template.md
new file mode 100644
index 0000000..dd7cd95
--- /dev/null
+++ b/agent-skills/codex/publish-project-to-github/assets/README-template.md
@@ -0,0 +1,43 @@
+# PROJECT_NAME
+
+ONE_SENTENCE_DESCRIPTION
+
+[**View the live project**](PUBLIC_URL) · [**View the source**](REPOSITORY_URL) · [**Read the build prompt**](PROMPT.md)
+
+
+
+## What it does
+
+- PRIMARY_FEATURE
+- PRIMARY_INTERACTION
+- DISTINCTIVE_CRAFT_OR_TECHNICAL_DETAIL
+
+## How it is made
+
+Explain the real architecture in two or three short paragraphs. Name the runtime, major dependencies, unusual implementation choices, and where the source of truth lives.
+
+Avoid generic marketing language. Explain why the implementation is interesting.
+
+## Build or remix it
+
+Link to a portable prompt when useful. For agent-built projects, link only to relevant official tools and explain how each fits the workflow.
+
+## Run locally
+
+```bash
+EXACT_RUN_COMMAND
+```
+
+Then visit `LOCAL_URL`.
+
+State required versions, installation steps, environment variables, and network dependencies. Never include real secrets.
+
+## Project structure
+
+```text
+PROJECT_STRUCTURE
+```
+
+## Design and attribution
+
+Credit dependencies, references, and assets accurately. If the project studies a recognizable product or publisher, explain that the implementation is original and independent rather than implying affiliation.
diff --git a/agent-skills/codex/publish-project-to-github/references/github-pages.md b/agent-skills/codex/publish-project-to-github/references/github-pages.md
new file mode 100644
index 0000000..878fd05
--- /dev/null
+++ b/agent-skills/codex/publish-project-to-github/references/github-pages.md
@@ -0,0 +1,116 @@
+# GitHub Pages reference
+
+Read this reference only when the user wants a public website or when Pages needs diagnosis.
+
+## Static branch deployment
+
+For a new static project served from the repository root:
+
+```bash
+project_repo="OWNER/REPOSITORY"
+project_branch="main"
+
+gh api --method POST "repos/${project_repo}/pages" \
+ -f "source[branch]=${project_branch}" \
+ -f 'source[path]=/'
+```
+
+Quote the `source[...]` arguments in shells that treat brackets as globs.
+
+Use `/docs` only when that directory contains the complete deployable site:
+
+```bash
+gh api --method POST "repos/${project_repo}/pages" \
+ -f "source[branch]=${project_branch}" \
+ -f 'source[path]=/docs'
+```
+
+If Pages already exists, read the current configuration first. Use the update endpoint only when the user authorized changing that source:
+
+```bash
+gh api "repos/${project_repo}/pages"
+
+gh api --method PUT "repos/${project_repo}/pages" \
+ -f "source[branch]=${project_branch}" \
+ -f 'source[path]=/'
+```
+
+## Repository metadata
+
+Set the public URL as the repository homepage after Pages accepts the configuration:
+
+```bash
+project_url="https://OWNER.github.io/REPOSITORY/"
+gh repo edit "${project_repo}" --homepage "${project_url}"
+```
+
+Add only accurate topics. Six focused topics are more useful than a long generic list.
+
+## Build status
+
+Read the latest build:
+
+```bash
+gh api "repos/${project_repo}/pages/builds/latest" \
+ --jq '{status,commit,updated_at,error}'
+```
+
+Poll with a short bounded interval. Stop on `built`, `errored`, or `canceled`. Do not leave an unbounded loop running.
+
+After `built`, verify the deployed commit matches the intended local commit.
+
+## Repository subpaths
+
+A project site is served from `https://OWNER.github.io/REPOSITORY/`, not the domain root.
+
+Prefer relative asset URLs:
+
+```html
+
+
+
+```
+
+Root-relative URLs such as `/assets/preview.jpg` resolve against `OWNER.github.io` and commonly break project sites.
+
+Test deep links, module imports, workers, manifests, fonts, and fetch requests for the same base-path issue.
+
+## Framework projects
+
+Do not paste a stale generic Actions workflow. Identify the framework and check its current official Pages deployment guidance.
+
+Verify at least:
+
+- the correct build command
+- the generated output directory
+- repository subpath or base URL configuration
+- the official Pages artifact action versions
+- whether SPA fallback routing is required
+
+For Next.js, Astro, Vite, or another framework, use its supported static export or Pages adapter. If the application needs server functions, a database, authentication callbacks, or secret runtime variables, Pages is not a compatible deployment target.
+
+## Common failures
+
+### 404 immediately after configuration
+
+- Wait for the latest build to reach a terminal status.
+- Verify `index.html` exists in the configured source directory.
+- Verify the configured branch exists on the remote.
+- Confirm repository visibility and Pages availability for the account.
+
+### HTML loads but assets fail
+
+- Inspect network and console errors.
+- Replace root-relative paths with repository-aware relative paths.
+- Verify capitalization exactly; GitHub's host is case-sensitive.
+- Confirm large or generated assets were committed and pushed.
+
+### Module MIME or import errors
+
+- Confirm the referenced file exists at the deployed URL.
+- Avoid importing local filesystem paths.
+- Use browser-compatible ES modules rather than package names that require a bundler.
+
+### Custom domain problems
+
+Do not add or change a custom domain without explicit authorization. Read current GitHub documentation, verify DNS ownership, and keep HTTPS enforcement enabled after the domain is verified.
diff --git a/agent-skills/codex/publish-project-to-github/scripts/audit_public_project.sh b/agent-skills/codex/publish-project-to-github/scripts/audit_public_project.sh
new file mode 100755
index 0000000..5a565c7
--- /dev/null
+++ b/agent-skills/codex/publish-project-to-github/scripts/audit_public_project.sh
@@ -0,0 +1,110 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+project_dir="${1:-.}"
+
+if [[ ! -d "$project_dir" ]]; then
+ echo "ERROR: project directory does not exist: $project_dir" >&2
+ exit 2
+fi
+
+if ! command -v rg >/dev/null 2>&1; then
+ echo "ERROR: ripgrep (rg) is required for this audit." >&2
+ exit 2
+fi
+
+project_dir="$(cd "$project_dir" && pwd)"
+issue_count=0
+warning_count=0
+
+echo "Public project audit"
+echo "Path: $project_dir"
+
+file_count="$(rg --files --hidden -g '!**/.git/**' "$project_dir" | wc -l | tr -d ' ')"
+echo "Files: $file_count"
+
+if [[ -f "$project_dir/index.html" ]]; then
+ echo "Entrypoint: index.html"
+elif [[ -f "$project_dir/package.json" ]]; then
+ echo "Entrypoint: package.json (verify the build output and host compatibility)"
+else
+ echo "WARNING: no index.html or package.json found at the project root."
+ warning_count=$((warning_count + 1))
+fi
+
+risky_files="$(
+ rg --files --hidden -g '!**/.git/**' "$project_dir" |
+ rg '(^|/)(\.env($|\.)|\.npmrc$|\.pypirc$|id_(rsa|dsa|ecdsa|ed25519)$|.*\.(pem|p12|pfx|key)$)' || true
+)"
+
+if [[ -n "$risky_files" ]]; then
+ echo "ERROR: sensitive-looking files require removal or explicit review:"
+ printf '%s\n' "$risky_files"
+ issue_count=$((issue_count + 1))
+fi
+
+secret_hits="$(
+ rg -n -I --hidden \
+ -g '!**/.git/**' \
+ -g '!*.lock' \
+ -g '!package-lock.json' \
+ -g '!pnpm-lock.yaml' \
+ -g '!yarn.lock' \
+ '(sk-[A-Za-z0-9_-]{20,}|gh[pousr]_[A-Za-z0-9]{20,}|AKIA[0-9A-Z]{16}|-----BEGIN (RSA |OPENSSH |EC |DSA )?PRIVATE KEY-----)' \
+ "$project_dir" || true
+)"
+
+if [[ -n "$secret_hits" ]]; then
+ echo "ERROR: possible credential material detected:"
+ printf '%s\n' "$secret_hits"
+ issue_count=$((issue_count + 1))
+fi
+
+personal_path_hits="$(
+ rg -n -I --hidden \
+ -g '!**/.git/**' \
+ -g '!*.lock' \
+ '(/Users/[^/[:space:]"<>]+|/home/[^/[:space:]"<>]+|[A-Za-z]:\\Users\\[^\\[:space:]"<>]+)' \
+ "$project_dir" || true
+)"
+
+if [[ -n "$personal_path_hits" ]]; then
+ echo "WARNING: absolute user paths require review:"
+ printf '%s\n' "$personal_path_hits"
+ warning_count=$((warning_count + 1))
+fi
+
+symlink_hits="$(find "$project_dir" -path "$project_dir/.git" -prune -o -type l -print)"
+if [[ -n "$symlink_hits" ]]; then
+ echo "WARNING: symlinks require destination review:"
+ printf '%s\n' "$symlink_hits"
+ warning_count=$((warning_count + 1))
+fi
+
+if git -C "$project_dir" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
+ git_root="$(git -C "$project_dir" rev-parse --show-toplevel)"
+ echo "Git state:"
+ if [[ "$git_root" != "$project_dir" ]]; then
+ echo "WARNING: project is nested inside repository root: $git_root"
+ warning_count=$((warning_count + 1))
+ fi
+ git -C "$git_root" status --short -- "$project_dir"
+ remote_url="$(git -C "$git_root" remote get-url origin 2>/dev/null || true)"
+ if [[ -n "$remote_url" ]]; then
+ echo "Origin: $remote_url"
+ else
+ echo "Origin: not configured"
+ fi
+else
+ echo "Git state: not initialized"
+fi
+
+echo "Issues: $issue_count"
+echo "Warnings: $warning_count"
+
+if [[ "$issue_count" -gt 0 ]]; then
+ echo "RESULT: blocked"
+ exit 1
+fi
+
+echo "RESULT: review warnings, then continue"
From 59f437a547523d3046086fc7ca171a9746226e38 Mon Sep 17 00:00:00 2001
From: Meng To <1065452+MengTo@users.noreply.github.com>
Date: Sat, 1 Aug 2026 23:02:01 +0800
Subject: [PATCH 2/4] Add social post launch skill
---
.../codex/prepare-social-post-launch/SKILL.md | 128 ++++++++++++++++++
.../agents/openai.yaml | 4 +
.../references/copy-patterns.md | 65 +++++++++
.../scripts/inspect_video_exports.py | 80 +++++++++++
4 files changed, 277 insertions(+)
create mode 100644 agent-skills/codex/prepare-social-post-launch/SKILL.md
create mode 100644 agent-skills/codex/prepare-social-post-launch/agents/openai.yaml
create mode 100644 agent-skills/codex/prepare-social-post-launch/references/copy-patterns.md
create mode 100755 agent-skills/codex/prepare-social-post-launch/scripts/inspect_video_exports.py
diff --git a/agent-skills/codex/prepare-social-post-launch/SKILL.md b/agent-skills/codex/prepare-social-post-launch/SKILL.md
new file mode 100644
index 0000000..2bfa0a5
--- /dev/null
+++ b/agent-skills/codex/prepare-social-post-launch/SKILL.md
@@ -0,0 +1,128 @@
+---
+name: prepare-social-post-launch
+description: Prepare a tutorial, sponsored-video, or resource launch across social platforms. Use when the user wants to package source files, write and render a PDF guide, upload public downloads, stage channel-specific social posts, configure an optional comment-keyword DM automation, draft follow-up posts, or audit 4:3, 9:16, and 16:9 video exports for cross-platform distribution.
+---
+
+# Prepare Social Post Launch
+
+Turn one long tutorial into a verified resource bundle and a review-ready social launch. Complete every reversible preparation step, but stop before publishing a social post, activating a DM automation, or uploading the full video unless the user explicitly authorizes that final action.
+
+## Canonical video matrix
+
+Use this distribution contract unless the user overrides it:
+
+| Destination | Aspect ratio | Captions |
+|---|---:|---|
+| X | 4:3 | Burned in |
+| LinkedIn | 4:3 | Burned in |
+| Threads | 4:3 | Burned in |
+| Instagram | 9:16 | Burned in |
+| YouTube | 16:9 | No burned-in captions |
+
+Run `scripts/inspect_video_exports.py` on candidate files before uploading. Do not infer the intended destination from a filename alone.
+
+## Required deliverables
+
+Prepare the applicable deliverables in one scoped bundle:
+
+1. The exact HTML demos shown in the video
+2. A ZIP containing those demos and a short README
+3. A polished PDF article based on the transcript
+4. Public Google Drive links for the ZIP and PDF
+5. Requested social posts staged with the matching exports and final copy
+6. An optional ManyChat automation targeting the next Instagram reel and a specific keyword
+7. Follow-up social drafts with the download links, every resource mentioned, and the full-video link
+8. A manifest recording source files, checksums, public URLs, and any unresolved fields
+
+## Workflow
+
+### 1. Audit the source material
+
+- Read the applicable repository instructions.
+- Inspect the video with `ffprobe` and transcribe the complete long-form version.
+- Create a visual timeline or contact sheet so the article and downloads match the video.
+- Identify every demonstrated HTML page from on-screen evidence, filenames, titles, and modification history.
+- Verify each candidate in the Codex in-app browser. Never use Chrome.
+- Package the exact demonstrated versions. Do not silently substitute a later variant.
+
+### 2. Build the HTML download
+
+- Preserve working standalone files as standalone files.
+- Keep dependent assets beside any multi-file page.
+- Add a README with opening instructions and browser requirements.
+- ZIP the demos and record its SHA-256 checksum.
+- Test the extracted bundle before uploading.
+
+### 3. Write and render the article
+
+- Use the user's requested voice skill and `no-ai-slop` when available.
+- Build the article from transcript evidence, not recollection.
+- Lead with the strongest practical change or surprise.
+- Explain the reusable mechanism with concrete prompts and examples.
+- Disclose sponsorship plainly.
+- Treat price and model claims as time-sensitive. Attribute observed costs to the tutorial and advise readers to check the live estimate.
+- Use the PDF skill to render the final document under `output/pdf/`.
+- Render every PDF page to images and inspect the full contact sheet for clipping, overflow, broken links, and weak hierarchy.
+
+### 4. Upload and verify downloads
+
+- Prefer the Google Drive connector.
+- If its write scope is unavailable, use the signed-in Codex browser.
+- Create a clearly named folder and upload the ZIP and PDF.
+- Set each delivery file to `Anyone with the link` and `Viewer` when the user has asked for public delivery.
+- Read the file IDs or copied links back from the live Drive state.
+- Verify that each item visibly reports shared/public access. Never invent or guess a Drive URL.
+
+### 5. Stage requested social posts
+
+- Match each requested destination to the verified export in the canonical video matrix.
+- Check every crop and media preview visually before advancing.
+- Write short platform-appropriate copy with one mechanism and one useful takeaway.
+- Add a keyword CTA only when a comment-to-DM workflow is part of the request.
+- Include sponsorship disclosure when applicable.
+- For Instagram, turn off Facebook cross-posting unless the user asked for it.
+- Stop at each platform's final share or publish control. Do not publish.
+
+### 6. Configure ManyChat
+
+Use the `Auto-DM links from comments` quick automation when an Instagram comment-to-DM workflow is requested.
+
+- Target `next post or reel`.
+- Match a specific memorable keyword, normally uppercase.
+- Enable public comment replies and write three short, natural variants.
+- Add an opening DM and a clear confirmation button.
+- Deliver direct links to the HTML ZIP, PDF, and full YouTube video.
+- Do not add an email gate unless the user asks for lead capture.
+- Do not enable follow-gating by default.
+- Stop before `Go live`.
+
+If the YouTube URL is missing, leave an explicit `[ADD YOUTUBE URL BEFORE GOING LIVE]` marker and keep the automation inactive. Do not replace it with a different video.
+
+### 7. Draft the follow-up social post
+
+Prepare a separate resource post for the requested follow-up channel after the main video post. It should:
+
+- Open with what is now available.
+- Give one useful lesson from the video.
+- Link the HTML archive, PDF guide, and full YouTube video.
+- Include direct links to the important tools and source references.
+- Stay concise enough to scan on mobile.
+- Remain a draft unless the user explicitly asks to post it.
+
+Use `references/copy-patterns.md` for reusable copy structure.
+
+### 8. Final verification and handoff
+
+- Confirm the local files exist and checksums match the upload sources.
+- Read every social caption back from its live composer.
+- Read the ManyChat trigger, replies, opening DM, and delivery message back from the live builder.
+- Confirm that neither Instagram nor ManyChat is live.
+- Keep relevant social and ManyChat tabs open as handoffs when user action is still required.
+- Report unresolved fields prominently, especially the YouTube URL.
+
+## Safety gates
+
+- Uploading the requested files to the named Drive and staging requested social posts are authorized when the user asked for those actions.
+- Publishing, activating an automation, sending a broadcast, and uploading a YouTube video are separate external actions. Do not infer those permissions.
+- Do not let a placeholder URL reach a live automation.
+- Never expose unrelated files, Drive folders, messages, contacts, or account data.
diff --git a/agent-skills/codex/prepare-social-post-launch/agents/openai.yaml b/agent-skills/codex/prepare-social-post-launch/agents/openai.yaml
new file mode 100644
index 0000000..dd8ee8e
--- /dev/null
+++ b/agent-skills/codex/prepare-social-post-launch/agents/openai.yaml
@@ -0,0 +1,4 @@
+interface:
+ display_name: "Prepare Social Post Launch"
+ short_description: "Prepare resource launches across social platforms."
+ default_prompt: "Use $prepare-social-post-launch to package the resources, validate channel-specific media, stage the requested social posts, and stop before publishing or activating automations."
diff --git a/agent-skills/codex/prepare-social-post-launch/references/copy-patterns.md b/agent-skills/codex/prepare-social-post-launch/references/copy-patterns.md
new file mode 100644
index 0000000..a754936
--- /dev/null
+++ b/agent-skills/codex/prepare-social-post-launch/references/copy-patterns.md
@@ -0,0 +1,65 @@
+# Copy patterns
+
+## Social caption with a comment-to-DM CTA
+
+```text
+I used [agent/tool] to build [specific result] from [strong references].
+
+The trick is [mechanism]. [Actionable sequence].
+
+Comment KEYWORD and I'll send you [specific bundle].
+
+Sponsored by [sponsor].
+```
+
+## Public replies
+
+Use three variations so the automation does not feel mechanical:
+
+```text
+Sent! Check your DMs 👀
+Just sent the files. Have fun with them.
+They’re in your DMs — [specific contents].
+```
+
+## Opening DM
+
+```text
+I packaged [exact contents], plus [guide or bonus]. Tap below and I'll send everything.
+```
+
+Button: `Send me the files`
+
+## Delivery DM
+
+```text
+Here you go:
+
+HTML demos: [public link]
+PDF guide: [public link]
+Full video: [YouTube link]
+
+[One immediately useful tip from the tutorial.]
+
+Sponsored by [sponsor].
+```
+
+## Follow-up X post
+
+```text
+The [number] [resources] from my [topic] video are ready.
+
+I also wrote a practical guide to [mechanism and payoff].
+
+HTML downloads:
+[link]
+
+PDF guide:
+[link]
+
+Full video:
+[link]
+
+Resources:
+[short direct list]
+```
diff --git a/agent-skills/codex/prepare-social-post-launch/scripts/inspect_video_exports.py b/agent-skills/codex/prepare-social-post-launch/scripts/inspect_video_exports.py
new file mode 100755
index 0000000..a8872e2
--- /dev/null
+++ b/agent-skills/codex/prepare-social-post-launch/scripts/inspect_video_exports.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python3
+"""Inspect video dimensions and map them to the social distribution matrix."""
+
+from __future__ import annotations
+
+import json
+import shutil
+import subprocess
+import sys
+from pathlib import Path
+
+
+def probe(path: Path) -> dict:
+ command = [
+ "ffprobe",
+ "-v",
+ "error",
+ "-select_streams",
+ "v:0",
+ "-show_entries",
+ "stream=width,height,avg_frame_rate:format=duration",
+ "-of",
+ "json",
+ str(path),
+ ]
+ result = subprocess.run(command, check=True, capture_output=True, text=True)
+ payload = json.loads(result.stdout)
+ stream = payload["streams"][0]
+ width = int(stream["width"])
+ height = int(stream["height"])
+ ratio = width / height
+
+ if abs(ratio - 4 / 3) < 0.03:
+ destination = "X, LinkedIn, Threads"
+ expected_captions = "burned in"
+ elif abs(ratio - 9 / 16) < 0.03:
+ destination = "Instagram"
+ expected_captions = "burned in"
+ elif abs(ratio - 16 / 9) < 0.03:
+ destination = "YouTube"
+ expected_captions = "not burned in"
+ else:
+ destination = "unclassified"
+ expected_captions = "review manually"
+
+ return {
+ "file": str(path.resolve()),
+ "width": width,
+ "height": height,
+ "aspect_ratio": round(ratio, 4),
+ "duration_seconds": round(float(payload["format"]["duration"]), 2),
+ "frame_rate": stream.get("avg_frame_rate"),
+ "destination": destination,
+ "expected_captions": expected_captions,
+ "caption_visual_check_required": True,
+ }
+
+
+def main() -> int:
+ if not shutil.which("ffprobe"):
+ print("ffprobe is required", file=sys.stderr)
+ return 2
+ if len(sys.argv) < 2:
+ print(f"Usage: {Path(sys.argv[0]).name} VIDEO [VIDEO ...]", file=sys.stderr)
+ return 2
+
+ records = []
+ for raw in sys.argv[1:]:
+ path = Path(raw).expanduser()
+ if not path.is_file():
+ print(f"Missing file: {path}", file=sys.stderr)
+ return 2
+ records.append(probe(path))
+
+ print(json.dumps(records, indent=2))
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
From c55f0223fb751e1276a35fb1b17710bb2d0a00f2 Mon Sep 17 00:00:00 2001
From: Meng To <1065452+MengTo@users.noreply.github.com>
Date: Sat, 1 Aug 2026 23:02:01 +0800
Subject: [PATCH 3/4] Add X crosspost draft skill
---
.../codex/prepare-x-crosspost-drafts/SKILL.md | 121 ++++++++++++++++++
.../agents/openai.yaml | 4 +
2 files changed, 125 insertions(+)
create mode 100644 agent-skills/codex/prepare-x-crosspost-drafts/SKILL.md
create mode 100644 agent-skills/codex/prepare-x-crosspost-drafts/agents/openai.yaml
diff --git a/agent-skills/codex/prepare-x-crosspost-drafts/SKILL.md b/agent-skills/codex/prepare-x-crosspost-drafts/SKILL.md
new file mode 100644
index 0000000..e3c8121
--- /dev/null
+++ b/agent-skills/codex/prepare-x-crosspost-drafts/SKILL.md
@@ -0,0 +1,121 @@
+---
+name: prepare-x-crosspost-drafts
+description: Prepare a known X post as matching Threads and LinkedIn drafts by recovering the exact authored copy and original media, filling the signed-in composers, verifying both previews, and stopping before the final Post or Publish action. Use when the user points to a specific X post and asks to cross-post, reuse, repurpose, or set up the same content, link, image, or video on Threads and LinkedIn without publishing it for them.
+---
+
+# Prepare X Crosspost Drafts
+
+## Goal
+
+Turn one selected X post into ready-to-publish Threads and LinkedIn composers. Preserve the source copy and media when the user asks for the same content, then leave the final publication action to the user.
+
+This is the direct preparation workflow for one known post. When the user wants discovery, popularity filtering, destination-history audits, deduplication, or an approval packet for several posts, complete that separate selection workflow before opening destination composers.
+
+## Authority boundary
+
+An explicit request such as “set up the post and I will publish” authorizes:
+
+- reading the named X post
+- locating or downloading its original media
+- opening signed-in Threads and LinkedIn composers
+- entering the approved copy and uploading the approved media
+- using intermediate controls such as `Next`, `Done`, or `Back` to reach the final composer
+- leaving the completed composers open
+
+It does not authorize clicking the final `Post`, `Publish`, or scheduler action. Do not like, repost, reply, follow, bookmark, message, change account settings, or publish another platform. Do not save a scheduler draft unless the user explicitly asks.
+
+## Start safely
+
+1. Read `AGENTS.md` and run `git status --short --branch` before changing local files.
+2. Query available connectors or APIs for X, Threads, and LinkedIn. Use a connector when it can perform the required operation. Use the signed-in Codex in-app browser for composer UI work. Never use Chrome.
+3. Read the browser-control skill and its file-upload guidance before browser actions.
+4. Open the canonical X status and verify the authored text, paragraph breaks, outbound link, media type, and media duration or image count.
+5. Treat X as read-only. Draft preparation is limited to the two destinations the user named.
+
+If authentication fails in the Codex browser, ask the user to sign in there and resume after confirmation. Do not switch browsers or use public search as a session substitute.
+
+## Preserve the source
+
+When the user says “same content,” copy the authored X text exactly:
+
+- preserve wording, paragraph breaks, capitalization, and the product URL
+- do not add hashtags, engagement prompts, credits, or platform-specific filler
+- exclude quoted-post text unless the user included it in the authored copy
+- do not copy X engagement counts, timestamps, or the quoted-post card
+
+If the text exceeds a destination limit, stop and ask whether to adapt it or split it. Do not silently rewrite a same-content request.
+
+## Recover the exact media
+
+Prefer media in this order:
+
+1. the exact local file the user supplied or previously attached
+2. the original media downloaded from the authored X post
+3. the quoted post’s original media only when the authored post has no attachment or the user explicitly asks for the quoted media
+
+For a quote post with both authored and quoted videos, “same video” means the video attached to the authored post. Do not replace it with the shorter quoted video.
+
+Use the browser page-asset or media-download capability when a local original is unavailable. Never substitute a screenshot, screen recording, generated card, or link preview when the source media exists.
+
+Before uploading:
+
+- resolve the absolute local path
+- confirm the file is non-empty and has the expected MIME type
+- use `ffprobe` to verify video duration and dimensions
+- visually inspect images when relevant
+- re-encode only when the destination rejects the original technical format; do not trim, crop, caption, or alter the content without approval
+
+## Prepare Threads
+
+1. Open `https://www.threads.com/` in the signed-in Codex browser.
+2. Open `New thread`.
+3. Fill the exact source copy.
+4. If the URL creates a link-preview card and the user requested source media, remove only the preview card. Verify that the URL remains in the text.
+5. Attach the exact media with the file-chooser flow and an absolute local path.
+6. Wait for the media preview to finish loading.
+7. Verify the full text, live product link, video player or image preview, and final `Post` control.
+8. Stop before `Post`.
+
+Do not use `Add to thread` unless the source copy exceeds the single-post limit and the user approves a split.
+
+## Prepare LinkedIn
+
+1. Prefer the direct signed-in composer at `https://www.linkedin.com/preload/sharebox/`.
+2. Fill the caption before opening the media editor so the copy survives the media flow.
+3. Select `Add media`.
+4. In the media editor, select the real `input[type="file"]` when it is available. Start waiting for the file chooser before clicking the input or visible upload control, then set the exact absolute file path.
+5. Wait for the upload or preview to finish.
+6. Use the intermediate `Next` or `Done` control to return to the final composer.
+7. Verify the full caption, video or image preview, and enabled final `Post` control.
+8. Stop before `Post`.
+
+If a background LinkedIn tab rejects typing or clicks, claim the active signed-in Codex browser tab or reopen a clean direct composer and repeat the workflow there. Remove abandoned duplicate composer tabs after the verified draft is ready.
+
+## Handle upload failures
+
+Use this recovery order:
+
+1. Refresh the DOM snapshot and confirm the current composer state.
+2. Prefer the actual file input over a decorative upload button.
+3. Retry from a clean, active Codex-browser composer rather than stacking more background modals.
+4. If the documented file-chooser flow still fails, leave the uploader open and ask the user to select the exact local file. Resume after the user confirms selection.
+
+Do not claim the destination is ready until the media preview is visible and the final composer has been checked. Report partial completion precisely.
+
+## Verify and hand off
+
+Before finishing, verify each destination independently:
+
+| Destination | Required proof |
+| --- | --- |
+| Threads | Exact text, product link still present, requested media preview visible, final `Post` control present |
+| LinkedIn | Exact caption, requested media preview visible, final `Post` control enabled |
+
+Leave only the two useful composer tabs open. Mark completed composers as deliverables and an upload that still needs user action as a handoff. Clean up source, duplicate, error, and abandoned composer tabs.
+
+Tell the user:
+
+- which destinations are fully ready
+- which copy and media were verified
+- whether any platform still needs one manual action
+- that no post was published
diff --git a/agent-skills/codex/prepare-x-crosspost-drafts/agents/openai.yaml b/agent-skills/codex/prepare-x-crosspost-drafts/agents/openai.yaml
new file mode 100644
index 0000000..00f0a2d
--- /dev/null
+++ b/agent-skills/codex/prepare-x-crosspost-drafts/agents/openai.yaml
@@ -0,0 +1,4 @@
+interface:
+ display_name: "Prepare X Crosspost Drafts"
+ short_description: "Set up Threads and LinkedIn drafts safely"
+ default_prompt: "Use $prepare-x-crosspost-drafts to prepare this X post with the same media on Threads and LinkedIn, then stop before publishing."
From 899d793593ed37f8db9cfb24df72199f204e32b3 Mon Sep 17 00:00:00 2001
From: Meng To <1065452+MengTo@users.noreply.github.com>
Date: Sat, 1 Aug 2026 23:02:01 +0800
Subject: [PATCH 4/4] Update Meng X voice corpus
---
.../references/content-source-map.md | 3 +-
.../references/tweet-corpus.jsonl | 102 ++++++++++++++++++
.../references/voice-profile.md | 50 ++++++++-
3 files changed, 149 insertions(+), 6 deletions(-)
diff --git a/agent-skills/codex/write-like-meng-on-x/references/content-source-map.md b/agent-skills/codex/write-like-meng-on-x/references/content-source-map.md
index a648c7f..906216b 100644
--- a/agent-skills/codex/write-like-meng-on-x/references/content-source-map.md
+++ b/agent-skills/codex/write-like-meng-on-x/references/content-source-map.md
@@ -13,9 +13,10 @@ Use this map to bring Meng's real context into X writing without copying whole a
| DesignCode | `articles/2026-06-23-new-designcode-tweet-ideas/content.md`, `articles/2026-06-20-designcode-codex-course-blueprint/content.md` | Teaching designers code and developers design, Codex course work, real build workflows | Pricing, launch timing, and course availability need current verification |
| DreamCut and video | `articles/2026-06-07-dreamcut-codex-dive-club-podcast/content.md`, `articles/2026-05-21-add-background-music-dreamcut/content.md`, `articles/2026-05-21-remove-video-background-dreamcut/content.md` | Screen recordings, captions, proof clips, product tutorials, AI-assisted video workflows | Check the DreamCut repo or current release before stating capability boundaries |
| Neuform and design systems | `articles/2026-04-21-neuform-design-md-workflow.md`, `articles/2026-04-25-neuform-course-blueprint.md` | References becoming rules, `DESIGN.md`, remixing, components, export paths | Verify current naming, availability, and pricing |
+| Vesperfall and game building | `articles/2026-07-24-how-i-built-vesperfall/content.md`, `articles/2026-07-24-how-i-built-vesperfall/vesperfall-full-game-prompt-v32.md`, `articles/2026-07-02-resources-i-use/content.md` | Playable contracts, reference boundaries, hybrid assets, image-to-3D, typed mechanics, deterministic review, performance, player feedback, and reusable game-development skills | Recheck the Vesperfall repo and live route before claiming the current version, metrics, catalog count, skill count, or shipped mechanics |
| Reference-first design | `articles/2026-06-04-avoid-ai-slop-design-workflow/content.md`, `articles/2026-07-02-floral-scroll-animation-prompts/content.md`, daily `ui-inspiration-capture` articles | Screenshots, motion evidence, section crops, interaction details, and precise references reduce generic output | Use rules and mechanisms, never copy a source brand or page |
| Founder and personal context | `articles/2026-06-12-dreamcut-failed-sales-strategy/content.md`, authored X corpus | Shipping, weak sales proof, travel, building from mobile, family time, aging, intuition, learning, and human taste | Personal details must be present in trusted sources and relevant to the post |
-| X strategy and proof | `articles/2026-07-13-x-history-teaching-strategy.md`, `data/x-growth/owned-posts/`, `data/x-growth/scorecards/` | Bookmarks as a learning signal, complete tutorials, proof clips, source-backed metrics | Read the newest snapshot and timestamp every metric |
+| X strategy and proof | `articles/2026-07-13-x-history-teaching-strategy.md`, `articles/2026-07-27-weekly-strategy-meeting.md`, `data/x-growth/owned-posts/`, `data/x-growth/scorecards/` | Bookmarks as a learning signal, complete tutorials, proof clips, distribution as product work, and source-backed metrics | Read the newest snapshot and timestamp every metric or payout claim |
| Current X drafting rules | `docs/x-growth-voice.md`, `skills/daily-x-growth/SKILL.md`, `data/x-growth/bookmark-quote-posts/` | Format, safety, source gates, approval state, and recent queue continuity | Generated drafts are not primary voice evidence |
## Focused Retrieval
diff --git a/agent-skills/codex/write-like-meng-on-x/references/tweet-corpus.jsonl b/agent-skills/codex/write-like-meng-on-x/references/tweet-corpus.jsonl
index 535b17c..4eb6b05 100644
--- a/agent-skills/codex/write-like-meng-on-x/references/tweet-corpus.jsonl
+++ b/agent-skills/codex/write-like-meng-on-x/references/tweet-corpus.jsonl
@@ -1,3 +1,90 @@
+{"id":"2083470258741133388","url":"https://x.com/MengTo/status/2083470258741133388","createdAt":"2026-08-01T08:29:53.000Z","format":"reply","text":"IRC. Wow you must know me from Shadowness or earlier?","textHash":"bc4b60a503fb4f386272ee7e78d79c919188c4b3bfc10906986e63956264dd60"}
+{"id":"2083470162821615756","url":"https://x.com/MengTo/status/2083470162821615756","createdAt":"2026-08-01T08:29:30.000Z","format":"reply","text":"In this era, it’s pretty hard to survive without it. Which is why I got my whole team to do this strategy.","textHash":"501663c2614633d80d53aa5aba5f094e5d624f844d3668896952cd5320ecc43f"}
+{"id":"2083470006046838968","url":"https://x.com/MengTo/status/2083470006046838968","createdAt":"2026-08-01T08:28:53.000Z","format":"reply","text":"Which is why I was surprised. But to be fair I don’t only do quote posts. 30-50% are original posts.","textHash":"8059c1a2fc25fb36b74ca7bdcfb60759d968b009d9e92a951207b223cb66597b"}
+{"id":"2083466636569551038","url":"https://x.com/MengTo/status/2083466636569551038","createdAt":"2026-08-01T08:15:29.000Z","format":"reply","text":"It's good news for build-in-public creators. We have a way to survive if the projects don't work.","textHash":"a44188039780cf1b3644ab87165a4824ea5afbd75ceb2df0f1338edb8fbafd40"}
+{"id":"2083462794838773764","url":"https://x.com/MengTo/status/2083462794838773764","createdAt":"2026-08-01T08:00:13.000Z","format":"reply","text":"Don't be discouraged. It always starts like this, but eventually someone is going to notice, and then with that, it's going to grow. You shouldn't focus on the virality of one post, but rather the consistency of many posts.","textHash":"b66746f9245f177c00a7ddbec04075e5893e41513afe25ec2e8e5796ff239880"}
+{"id":"2083460629092839805","url":"https://x.com/MengTo/status/2083460629092839805","createdAt":"2026-08-01T07:51:37.000Z","format":"reply","text":"So there are many strategies, but essentially you want to start with the bookmarks, and then, since I already browse X on a daily basis, this is fairly easy. Secondly, you want to schedule posts or plan drafts for the future.\n\nThirdly, AI can help a lot with the writing so it burns you out less. So the last human part is just to curate and refine.","textHash":"7279b75c60b85fd65243eca230f8401872d80252ac6aae90c3cefc473e729e5d"}
+{"id":"2083457501165679002","url":"https://x.com/MengTo/status/2083457501165679002","createdAt":"2026-08-01T07:39:11.000Z","format":"reply","text":"Appreciate your support all these years. Yes, it's already been a decade.","textHash":"deea91adafe6a7dcf3d099df53ea5e4450962835dca0663e9f821bbc60d3da0a"}
+{"id":"2083457442357334280","url":"https://x.com/MengTo/status/2083457442357334280","createdAt":"2026-08-01T07:38:57.000Z","format":"reply","text":"So good to see that my content is still doing well.","textHash":"33462158b39d64e409a3c04cd132e26e07d526b6f10648f7d667a4fdcf9cf711"}
+{"id":"2083457352012087339","url":"https://x.com/MengTo/status/2083457352012087339","createdAt":"2026-08-01T07:38:36.000Z","format":"reply","text":"Haven't lost my touch after all these years. Even in an era of AI.","textHash":"8faf53419c4bd7fbdc9ec76ce63ad5fc6afe08245bcab988d3b8f68ea8758ae0"}
+{"id":"2083448799662649638","url":"https://x.com/MengTo/status/2083448799662649638","createdAt":"2026-08-01T07:04:37.000Z","format":"reply","text":"My first love has always been twitter. So glad it’s paying off now","textHash":"ffc494d196fb48a3cfca82e76ca0eb120109f3f1bd2fecc9678e92b36f47ae22"}
+{"id":"2083444373992484905","url":"https://x.com/MengTo/status/2083444373992484905","createdAt":"2026-08-01T06:47:01.000Z","format":"reply","text":"I'm amazed at how generous X is","textHash":"af405346c14afb5ca5e617e1b1d5b327d042006e571a43205bd5352dbc1ced62"}
+{"id":"2083444058740121733","url":"https://x.com/MengTo/status/2083444058740121733","createdAt":"2026-08-01T06:45:46.000Z","format":"reply","text":"all for survival","textHash":"eb2a63ae60f7bb9c726f4e669780bb933e1279a206b801bc6c3315acc4f2fbf1"}
+{"id":"2083443485806645287","url":"https://x.com/MengTo/status/2083443485806645287","createdAt":"2026-08-01T06:43:30.000Z","format":"original","text":"I opened X this morning and saw $2,802.71 in total creator payouts. I genuinely thought I was reading it wrong. YouTube never paid me this much.\n\nMy last two weeks reached 1.9M impressions after I started posting twice a day, mostly quote posts where I recommend tools and projects.\n\nThe timing couldn’t be better. Revenue from some of my tools has been declining as the big AI products absorb more features.\n\nX payouts and sponsorships now give me another way to fund my projects and keep building. I never expected posting here to become a major part of the business.","textHash":"24c11003bbcfab56a903244d688e8f9bf7e7eaafcfc5c5c58410e6a534aad220"}
+{"id":"2083405086752145816","url":"https://x.com/MengTo/status/2083405086752145816","createdAt":"2026-08-01T04:10:55.000Z","format":"reply","text":"really need feedback on dreamcut so i can improve it. :)","textHash":"f1b421972051ed900749e2bea3ad62b8a9db2f24900834e4c73cf57937022d9a"}
+{"id":"2083404986113986711","url":"https://x.com/MengTo/status/2083404986113986711","createdAt":"2026-08-01T04:10:31.000Z","format":"reply","text":"i know it's hard to learn a new video editor. and it's bootstrapped. :)","textHash":"17c5735f5189c763c50c19693476222113f9ff5df6e07203022cac699c94f81c"}
+{"id":"2083389338747105368","url":"https://x.com/MengTo/status/2083389338747105368","createdAt":"2026-08-01T03:08:20.000Z","format":"reply","text":"let me know if you need a walkthrough. happy to do that","textHash":"8ccea6cea1cc789989c33fa853f43abd2729ff1499e23b40ef6df426509d1838"}
+{"id":"2083243032565149764","url":"https://x.com/MengTo/status/2083243032565149764","createdAt":"2026-07-31T17:26:58.000Z","format":"reply","text":"working on it!","textHash":"b58a1d262eac32abcd21985a418d8d1020e4640e95e4495e266651b23b0f5bec"}
+{"id":"2083242944057004519","url":"https://x.com/MengTo/status/2083242944057004519","createdAt":"2026-07-31T17:26:37.000Z","format":"reply","text":"So it's important to give superpowers to your harness:\n\nI open-sourced a bunch of web design skills:\nhttps://\ngithub.com/mengto/skills\n\nFull video:\n\nhttps://\nyoutu.be/lPtf_-J75Sk\n\nResources:\nHiggsfield MCP:\nhttps://\nhiggsfield.ai/mcp\nCanvas UI:\nhttps://\ncanvasui.dev\nShaders:\nhttps://\nshaders.com","textHash":"f747ca779436e839fa0666c8aadde21d9be71541d741ed66633cd2d932a733f6"}
+{"id":"2083230493861147076","url":"https://x.com/MengTo/status/2083230493861147076","createdAt":"2026-07-31T16:37:08.000Z","format":"reply","text":"only way to stand out in a sea of ai slops.","textHash":"15b160cf742af8b6d07c7f41a3adacaf0bf32c949e3f67db435477540bf865dd"}
+{"id":"2083226916778369093","url":"https://x.com/MengTo/status/2083226916778369093","createdAt":"2026-07-31T16:22:56.000Z","format":"reply","text":"Costs about $1-2 per video at 1080p using Seedance. I'm on an Ultra plan.","textHash":"0640447086060e990357277fe1d783a2a5be60f968e51bd6aa925b7906afa5a5"}
+{"id":"2082306015744385164","url":"https://x.com/MengTo/status/2082306015744385164","createdAt":"2026-07-29T03:23:36.000Z","format":"reply","text":"just the X url was enough, which includes video and github repo. next best thing is video, then url, then image.","textHash":"6fdb92e7c2a1071169bd0f03a06e7f51f95d4b785a30905a10e9a387c45e446d"}
+{"id":"2082305854859296843","url":"https://x.com/MengTo/status/2082305854859296843","createdAt":"2026-07-29T03:22:57.000Z","format":"reply","text":"honestly, just the X post was enough for Codex to get the full context since it has github link and video.","textHash":"469847402645e99cb04ae2168ee1a8553215cc0cfb4a7bbf3201f7b7fcc1260c"}
+{"id":"2082271950026744139","url":"https://x.com/MengTo/status/2082271950026744139","createdAt":"2026-07-29T01:08:14.000Z","format":"reply","text":"concept, colors, generating images, tweaking the 3D and UI.","textHash":"02c91bbb9773693e3ae33c041214e596c65281ea15e9ae5338596506fc86f2a0"}
+{"id":"2082265920173711530","url":"https://x.com/MengTo/status/2082265920173711530","createdAt":"2026-07-29T00:44:16.000Z","format":"quote","text":"I keep seeing the same pattern with Three.js games, shaders, p5.js, and now 3D UI.\n\nGive a coding agent a strong reference, the live URL, and the source repo. It can study the mechanics, recreate them, and give you a working place to experiment.\n\nFor this one, I turned a Trevor Noah-inspired book interaction into fictional manuals for Codex, Claude Code, and Cursor.\n\nX post:\nhttps://\nx.com/thebuggeddev/s\ntatus/2081059128626344201\n…\n\nGitHub:\nhttps://\ngithub.com/thebuggeddev/b\nooks\n…\n\nOriginal site:\nhttps://\ntrevornoah.com/books","textHash":"726750eef45e19188c1ecbdc72d6efc8893086786f18f1d3c6ee4c636ac32ad5"}
+{"id":"2082134973474288093","url":"https://x.com/MengTo/status/2082134973474288093","createdAt":"2026-07-28T16:03:56.000Z","format":"reply","text":"yea I reject 50% of the times for creative stuff. hope that number goes down.","textHash":"e225188bbdceb033afd40848769a32af7bbcaeda6523dd738574f78688ef707b"}
+{"id":"2082134646046007741","url":"https://x.com/MengTo/status/2082134646046007741","createdAt":"2026-07-28T16:02:38.000Z","format":"reply","text":"Totally agreed but the closer it gets to what you want, the better so that the creation is at the last 5% or 10%, which is exactly what we were doing with code, a year ago.","textHash":"f882453b95e597f87622057cd8a4fd70544636081054d24b3ed1a54eed952b35"}
+{"id":"2082124822247821432","url":"https://x.com/MengTo/status/2082124822247821432","createdAt":"2026-07-28T15:23:36.000Z","format":"reply","text":"yeah there is a huge need for curation everywhere ai touches","textHash":"fb6aed5afc16d97cd3efb28c5435a6f23322af6e13e949d5bf3728525292d661"}
+{"id":"2082112318008348786","url":"https://x.com/MengTo/status/2082112318008348786","createdAt":"2026-07-28T14:33:55.000Z","format":"reply","text":"I must say that AI being able to browse your X is a superpower","textHash":"ddbf73952cd16a09be6283635f13e132d3c3f1a7e183abb472748fcf4c9815f1"}
+{"id":"2082108076128444658","url":"https://x.com/MengTo/status/2082108076128444658","createdAt":"2026-07-28T14:17:03.000Z","format":"quote","text":"AI is terrible at writing in your voice by default.\n\nI pair these two skills together. One removes the fake insights and robotic phrasing. Mine studies my past writing and gives me five different versions that still sound like me.\n\nNo AI slop:\n\nhttp://\ngithub.com/petergyang/no-\nai-slop\n…\n\nWrite like Meng (ask AI to adapt to you):\n\nhttp://\ngithub.com/MengTo/Skills/\nblob/main/agent-skills/codex/write-like-meng-on-x/SKILL.md\n…","textHash":"9c88e20b067e1c0ac20fa0f3117417f89764fddd7aaf86b830ed3a8057899c0d"}
+{"id":"2082037707828875662","url":"https://x.com/MengTo/status/2082037707828875662","createdAt":"2026-07-28T09:37:26.000Z","format":"reply","text":"yep discovering p5.js to pair with ai. it's beautiful.","textHash":"afb40afe72c708252022b62b495ce042b0a8c0d1093e5b14d20e0cfb94559053"}
+{"id":"2082032015642341698","url":"https://x.com/MengTo/status/2082032015642341698","createdAt":"2026-07-28T09:14:49.000Z","format":"reply","text":"honestly just came back from vacation and i've been building like crazy. getting to it shortly!","textHash":"ac0ef55ffa062de8ecba9acca809c7b3dddb8bfad758f580b588024cc6d70cbb"}
+{"id":"2082027047053123716","url":"https://x.com/MengTo/status/2082027047053123716","createdAt":"2026-07-28T08:55:04.000Z","format":"reply","text":"yes, are you looking forward?","textHash":"a71641bc8b7f1231fed5516e1472ca40cb8f850cea843e33336a5943a093660c"}
+{"id":"2082021344376713590","url":"https://x.com/MengTo/status/2082021344376713590","createdAt":"2026-07-28T08:32:25.000Z","format":"reply","text":"you mean show the htmls?","textHash":"8b8085144e6df72e80c1e267deb847a3061daa84f766147cd6e1339e2c1d8af9"}
+{"id":"2081988415802020068","url":"https://x.com/MengTo/status/2081988415802020068","createdAt":"2026-07-28T06:21:34.000Z","format":"reply","text":"feels like a good alternative to using shaders.","textHash":"65ec54b76a22ecf8c5093fa188c5f9a40f24b81f51eb988356d93c0d8416515d"}
+{"id":"2081980344576901196","url":"https://x.com/MengTo/status/2081980344576901196","createdAt":"2026-07-28T05:49:30.000Z","format":"quote","text":"Kind of incredible that this entire animation comes from a tiny p5.js sketch and a bit of math.\n\nI gave the code to Codex, asked it to rebuild it as standalone HTML, then reused the same particle system to make a flower, OpenAI logo, book and keyboard.\n\nFunny how AI can understand and remix code like this, but still struggles with SVG vector graphics.","textHash":"f569ef37d6755eca2b211b7d9c825c66504c6ecaa1888f267d81a49589413306"}
+{"id":"2081698806455058489","url":"https://x.com/MengTo/status/2081698806455058489","createdAt":"2026-07-27T11:10:46.000Z","format":"reply","text":"Sorry, we’re barely making sales anymore. It’s due for revival","textHash":"5a706d54f5e872a85151c8a9e2590125f2c4db4f6becf7932e82dd80f7564cb5"}
+{"id":"2081589782371791053","url":"https://x.com/MengTo/status/2081589782371791053","createdAt":"2026-07-27T03:57:32.000Z","format":"quote","text":"Opus 5 is getting eerily good at creating product videos with camera moves like zooms, perspective shifts, and seamless transitions.\n\nThis 8-minute video breaks down the workflow:\n\nhttps://\nyoutube.com/watch?v=oX43sx\nhvlWI\n…","textHash":"5a30aac2d2097a822ba9f1d70621cc0ae794e1ab9dbdd87e425066b417184ed3"}
+{"id":"2081362047967862984","url":"https://x.com/MengTo/status/2081362047967862984","createdAt":"2026-07-26T12:52:36.000Z","format":"quote","text":"Opus 5 one-shotting a game with this much detail is crazy.\n\nThe prompt and source code are both shared, so this isn’t just another Opus 5 demo. You can study the exact input and implementation.\n\nSource code:\nhttps://\ngithub.com/mshumer/Claude\n-of-Duty\n…\n\nPrompt:\nhttps://\nx.com/mattshumer_/st\natus/2081100592689324502?s=20\n…","textHash":"fcd7fd164fe5025eacff5a362e74a9feb15b6ebb8c982585b515de26ffcd6fc9"}
+{"id":"2081341945662808312","url":"https://x.com/MengTo/status/2081341945662808312","createdAt":"2026-07-26T11:32:43.000Z","format":"reply","text":"wait until it gets even better.","textHash":"d2cc06b84b3a6441d97a85db83b480acc759e4a630a3dae4122fb44ab99248a6"}
+{"id":"2081341878310699408","url":"https://x.com/MengTo/status/2081341878310699408","createdAt":"2026-07-26T11:32:27.000Z","format":"reply","text":"using img2threejs library","textHash":"81975d5bed5b92744faed02b24c48e9693cf74d5ea23300101014bd21dd16bd6"}
+{"id":"2081341817686286624","url":"https://x.com/MengTo/status/2081341817686286624","createdAt":"2026-07-26T11:32:13.000Z","format":"reply","text":"welcome to dark souls, my friend","textHash":"0657187ad2bf3776bf1f560b24114052ae49a1686aea9911e70e11d739539aed"}
+{"id":"2081328703855075821","url":"https://x.com/MengTo/status/2081328703855075821","createdAt":"2026-07-26T10:40:06.000Z","format":"reply","text":"Would love to hear your feedback","textHash":"af169e131480d2892713176066495a588e20bdb85ceac5d9d8b0d925466c38c8"}
+{"id":"2081279507831664644","url":"https://x.com/MengTo/status/2081279507831664644","createdAt":"2026-07-26T07:24:37.000Z","format":"reply","text":"Yep, 90% of what I do everyday","textHash":"976621f528d8f0816d7dcb4185e81c93a395f04bef28f7cc4cc98b51dc069fa4"}
+{"id":"2081275600543560120","url":"https://x.com/MengTo/status/2081275600543560120","createdAt":"2026-07-26T07:09:06.000Z","format":"quote","text":"Amicro is a great library of React micro-interactions.\n\nIt includes buttons, cards, loaders, animations and 3D carousels.\n\nJust copy a component into your prompt and your AI agent can recreate the interaction. It also comes with a CLI and a growing collection of skills.\n\namicro.vercel.app","textHash":"c083805c0624b11cef98089579fb44f9718d0a541592eca2b6520fcc2633a3a4"}
+{"id":"2081040284419506328","url":"https://x.com/MengTo/status/2081040284419506328","createdAt":"2026-07-25T15:34:02.000Z","format":"reply","text":"those skeuomorphic buttons 🔥","textHash":"5089648bf0c2861b60fbbe784d78e1e920023d8baff57bd8e1cb7c2100f846b9"}
+{"id":"2081033365520875734","url":"https://x.com/MengTo/status/2081033365520875734","createdAt":"2026-07-25T15:06:32.000Z","format":"reply","text":"about 3 days today. first version after 24h:","textHash":"0c818c1fad3f93fe80e8b70fb84e16abd2fcbdc951ebe28d13d138c468949d64"}
+{"id":"2081002838302572561","url":"https://x.com/MengTo/status/2081002838302572561","createdAt":"2026-07-25T13:05:14.000Z","format":"reply","text":"The performance skill is part of the library. Basically, you want to have graphics settings and low-poly, textures, and check for perf regularly.","textHash":"33ce1684c19588eeb1889e3060e010a3a4668b6415ae5f3653fac36707fac84f"}
+{"id":"2081002329990705205","url":"https://x.com/MengTo/status/2081002329990705205","createdAt":"2026-07-25T13:03:13.000Z","format":"reply","text":"Start with a strong reference of game with screenshots, monsters, icons and ask your agent to generate new images inspired by them. Then use img2threejs to create their 3D assets with the build-game-monster-system skill (based on game mechanics).","textHash":"473902462385e4d991c98448433e4c3cc9fbe3da0fcfb108e049957c08c047dd"}
+{"id":"2080953129244500460","url":"https://x.com/MengTo/status/2080953129244500460","createdAt":"2026-07-25T09:47:42.000Z","format":"reply","text":"Asking codex to generate images first then turn them into 3d","textHash":"b1ba57443dfa6a74867e77aa101904fd6fe490b2dd539b54f1d82f3efe71482e"}
+{"id":"2080948500788039864","url":"https://x.com/MengTo/status/2080948500788039864","createdAt":"2026-07-25T09:29:19.000Z","format":"reply","text":"took a few prompts. glad it finally got it right.","textHash":"dac189087b8e24560851999f8bcd3c0f1919a2b0efd7c56f78beca4606cb4d1e"}
+{"id":"2080947663827325412","url":"https://x.com/MengTo/status/2080947663827325412","createdAt":"2026-07-25T09:25:59.000Z","format":"reply","text":"you can ask codex to create similar assets from the skills and examples","textHash":"f26e71156ce0ffd45b2d559507192ef359d977136d2a8f087d2f394fd846cc36"}
+{"id":"2080947488731930723","url":"https://x.com/MengTo/status/2080947488731930723","createdAt":"2026-07-25T09:25:18.000Z","format":"reply","text":"did you manage to beat the boss?","textHash":"de441623bdef2ad8ccad6186951bfbc842c0d353dd1ee4caa54b4369219615aa"}
+{"id":"2080947434268811390","url":"https://x.com/MengTo/status/2080947434268811390","createdAt":"2026-07-25T09:25:05.000Z","format":"reply","text":"it's so fun though, always wanted to create one","textHash":"60eb9615d618fee380b1e96155ab02585dd181f356f484417a86ae2fa800e74d"}
+{"id":"2080947339213295719","url":"https://x.com/MengTo/status/2080947339213295719","createdAt":"2026-07-25T09:24:42.000Z","format":"reply","text":"yep you can play the game and check the assets","textHash":"e299e9e22d700beb03dc372cb7c31d552e957a24d364d9d1365625276b3588e3"}
+{"id":"2080947288231555257","url":"https://x.com/MengTo/status/2080947288231555257","createdAt":"2026-07-25T09:24:30.000Z","format":"reply","text":"all done with codex from scratch","textHash":"0a2e010307cef2ff0b5c99bb45550d935fdbdad1378112e466bc9476f6bc9bf0"}
+{"id":"2080944944299274362","url":"https://x.com/MengTo/status/2080944944299274362","createdAt":"2026-07-25T09:15:11.000Z","format":"reply","text":"totally, multiplayer would be fun.","textHash":"a2cc0b7e85f1cc1a1b2f3b0b5400582d4d66ebd261c03a401c9e6f92a90d711c"}
+{"id":"2080940554570142173","url":"https://x.com/MengTo/status/2080940554570142173","createdAt":"2026-07-25T08:57:44.000Z","format":"reply","text":"What a big change from day 1. I'm already at day 3.","textHash":"a206365f43a5a6fc80bc8d494b224ba834906ab28d55ff27b92783750f19d4c2"}
+{"id":"2080938169911140605","url":"https://x.com/MengTo/status/2080938169911140605","createdAt":"2026-07-25T08:48:16.000Z","format":"reply","text":"Yes ChatGPT sites can be set to public","textHash":"bdd52a17ac26dd63952f1b272b7ae6b2a670ebfbfa4e559ca09add349e51bee2"}
+{"id":"2080937979443585441","url":"https://x.com/MengTo/status/2080937979443585441","createdAt":"2026-07-25T08:47:30.000Z","format":"reply","text":"Yes all codex from scratch and img to threejs","textHash":"88a83c20053e8efc0a6ac742c94b7a6b952ccc0a37fd948577449d4748c72640"}
+{"id":"2080926800780435481","url":"https://x.com/MengTo/status/2080926800780435481","createdAt":"2026-07-25T08:03:05.000Z","format":"reply","text":"it's like diablo and dark souls had a child","textHash":"5db8a6f1e1bba347d2ab75c2fa78c50a9dce601e7c376d20fb596108b9f3acf3"}
+{"id":"2080918004876083463","url":"https://x.com/MengTo/status/2080918004876083463","createdAt":"2026-07-25T07:28:08.000Z","format":"reply","text":"crazy how far we've come with game dev. no need for big studios anymore.","textHash":"1e50ff6b968a964fb73b9b02355ac3c1349a33397ab944c81b55f2c582b460e2"}
+{"id":"2080917882998030362","url":"https://x.com/MengTo/status/2080917882998030362","createdAt":"2026-07-25T07:27:39.000Z","format":"reply","text":"yep pretty much. all the lessons i've learned and techniques i used.","textHash":"68a7d76f5a95a1aeba92dbeef9373a13c4272f74708037571c0a9c8a98984753"}
+{"id":"2080217005727314315","url":"https://x.com/MengTo/status/2080217005727314315","createdAt":"2026-07-23T09:02:37.000Z","format":"reply","text":"haven't tested on mobile, but you can try yourself.","textHash":"e9e9d8f9c89989d28cd7bca8a03a694af91e9f7108f2a643096c19e3c7efe77b"}
+{"id":"2080216847631438117","url":"https://x.com/MengTo/status/2080216847631438117","createdAt":"2026-07-23T09:01:59.000Z","format":"reply","text":"not familiar with boilerplate but model was pretty basic as first, so low-poly. img2threejs helped a lot.","textHash":"1dac24bce7d1ac2e07523acac5f4be3e754788f388a18b72565d9c1b3f4be6d7"}
+{"id":"2080215371693564210","url":"https://x.com/MengTo/status/2080215371693564210","createdAt":"2026-07-23T08:56:07.000Z","format":"original","text":"I made a Dark Souls-inspired Three.js game with Sol Ultra using Codex Sites. It's fully playable in the browser.\n\nvesperfall.mengto.chatgpt.site\n\nI handled the prompts, references, and libraries like img2threejs. The game has shield blocking, dodge rolls, archery, and a full inventory system. Still blows my mind that you can build a 3D game like this in a single afternoon.","textHash":"3c29c0c72cf5e7f77a2f49bf19b5be4f1c1b59062b5d8f65687f63967b2ec1b4"}
+{"id":"2080193994085347429","url":"https://x.com/MengTo/status/2080193994085347429","createdAt":"2026-07-23T07:31:10.000Z","format":"reply","text":"this is such a good landing page. love that every section has their own interactions.","textHash":"8d8b33783069cc39a73cb662d9a080bdc310470ad414992815f641cffb334000"}
+{"id":"2080046979393139065","url":"https://x.com/MengTo/status/2080046979393139065","createdAt":"2026-07-22T21:46:59.000Z","format":"reply","text":"been using your libraries and will use this one. thanks!","textHash":"7009a53b1f50ee813b750569de45c9b7deea74602d66a01423b256cee8d4820f"}
+{"id":"2080031728085930274","url":"https://x.com/MengTo/status/2080031728085930274","createdAt":"2026-07-22T20:46:23.000Z","format":"reply","text":"posting a lot of these libraries on my profile.","textHash":"e7171383e41f6318143030c8eefc5143fde24018a514c4c60cf9f858be42ecb8"}
+{"id":"2079933926005682537","url":"https://x.com/MengTo/status/2079933926005682537","createdAt":"2026-07-22T14:17:45.000Z","format":"quote","text":"These will instantly make your vibe-coded projects look less generic.\n\nFree, open-source libraries from the same creator:\n\n• orbs.jakubantalik.com\n• beam.jakubantalik.com\n• metal.jakubantalik.com","textHash":"7c4de4b4c1754190ab354f12623229f4bc21583fc2a24b55ee57190afb8a37e7"}
+{"id":"2079580902167081012","url":"https://x.com/MengTo/status/2079580902167081012","createdAt":"2026-07-21T14:54:58.000Z","format":"quote","text":"Multi-tasking with agents across Codex, Claude Code, and Cursor is becoming a challenge.\n\nThe notch is the perfect place to keep track.\n\nThis open-source project is a great starting point. It's also a fun way to learn macOS development and build features tailored to your workflow. Just paste the GitHub URL into your agent and ask it to install or improve it.\n\ngithub.com/realfishsam/agent-notch","textHash":"3e0031ac36093d0dcc66e5edc8bd0badf4f04fe861c87f9dadf4a9c42b587217"}
+{"id":"2079531312961187847","url":"https://x.com/MengTo/status/2079531312961187847","createdAt":"2026-07-21T11:37:55.000Z","format":"reply","text":"Another banger from you. Great to see you post your full tutorial here.\n\nLove how polished your pages have become.","textHash":"a07aadb9e1701bb4ee341200f1c40145203fad4089e6924e7abdf681db217b15"}
+{"id":"2079406547961303337","url":"https://x.com/MengTo/status/2079406547961303337","createdAt":"2026-07-21T03:22:09.000Z","format":"reply","text":"Working on it","textHash":"fe56231dc5d1f73c377cc13bd8535908377e1c5ec569e46d56cfeb5381e5ae38"}
+{"id":"2079267787298746709","url":"https://x.com/MengTo/status/2079267787298746709","createdAt":"2026-07-20T18:10:46.000Z","format":"quote","text":"A skill that turns a single image into editable Three.js code.\n\nInstead of a static asset, you get clean 3D you can animate, tweak, and drop straight into your site. Great for scroll effects, product demos, and interactive experiences.\n\nAI is great at generating images, but it still struggles with editable vectors and 3D. That's why a skill like this is so useful.\n\ngithub.com/hoainho/img2threejs","textHash":"3a5e8a704489d7adb3d63ee3f7f1c63eb2a43dee70d6fe26387331fbc1099817"}
+{"id":"2078746811918115180","url":"https://x.com/MengTo/status/2078746811918115180","createdAt":"2026-07-19T07:40:35.000Z","format":"reply","text":"I’m getting back into teaching many courses, so iOS 27 will be one of them. Thanks!","textHash":"65f74ba705c2eca4cb7139b64ede88822b40b73bc530b00058ededd93ae6563a"}
+{"id":"2078727950426640813","url":"https://x.com/MengTo/status/2078727950426640813","createdAt":"2026-07-19T06:25:38.000Z","format":"reply","text":"You’re welcome. It’s working for me, even during vacation since agents can do a lot of the follow-ups.","textHash":"686327c7dc40cd147945816cdc2ae6e270ccca528e93df28ca9ed1a40f1e2e88"}
+{"id":"2078712794237845784","url":"https://x.com/MengTo/status/2078712794237845784","createdAt":"2026-07-19T05:25:25.000Z","format":"reply","text":"Just started yesterday. I heard reports of 15M for 4K.","textHash":"0fbe696ccd3d24d3671e8b85cdd95859980ac7b05240780b917ccf1d147d7ea6"}
+{"id":"2078697721519841547","url":"https://x.com/MengTo/status/2078697721519841547","createdAt":"2026-07-19T04:25:31.000Z","format":"reply","text":"I’d say 50%. ai is useful for drafts, looping, reminding and improving.","textHash":"57788c121154e72fb3212495f00ec194ec5d57c0e975cdfe0c29824fd36e5944"}
+{"id":"2078691482618466792","url":"https://x.com/MengTo/status/2078691482618466792","createdAt":"2026-07-19T04:00:44.000Z","format":"reply","text":"going to update my skills regularly. looking into posting articles if they do well.","textHash":"d90f810737c3e9426ad542a7da75cabced4420bab83f83abb19ca7a709add0d8"}
+{"id":"2078690643149549867","url":"https://x.com/MengTo/status/2078690643149549867","createdAt":"2026-07-19T03:57:24.000Z","format":"reply","text":"better, i made two skills for it:\n\ngithub.com/MengTo/Skills/blob/main/agent-skills/codex/x-bookmark-quote-posts/SKILL.md\n\ngithub.com/MengTo/Skills/blob/main/agent-skills/codex/write-like-meng-on-x/SKILL.md","textHash":"f79ec1c36f4b0eee6642d4a0b94431acc985453c3758f8cb6015f660210a2576"}
+{"id":"2078690410713829380","url":"https://x.com/MengTo/status/2078690410713829380","createdAt":"2026-07-19T03:56:28.000Z","format":"reply","text":"Love Codex, it's my daily driver. A few things:\n\n- Sites should have grid-style previews and should open in previous chat for edits, or in a default Project called Sites.\n\n- Skills should be community-oriented, with author page, analytics on usage, etc. It's kinda hard to find new public skills or share ours with the world.\n\n- We should be able to use ChatGPT live for Codex projects.\n\n- Pet is a great concept, but should be less intrusive, like part of the menu bar with notifications.\n\n- It's hard to find old threads. Maybe a search per project and improve search with thumbnails & dates or an infinite canvas flow chart.\n\n- Would love a second brain concept where we can browse/manage our articles/workflows/skills/memories.\n\n- Why does prompting from Mobile keep asking for permissions even with full access?\n\n- Browser seriously need to be better: bookmarks, history, on in new standalone window, etc.\n\nI have many more, but those are the first that come to mind. Thanks for the resets!","textHash":"dcedcbd6cffc5513b73de52e32545da455897e2273edcb28f552719229d9a605"}
+{"id":"2078680850674356481","url":"https://x.com/MengTo/status/2078680850674356481","createdAt":"2026-07-19T03:18:29.000Z","format":"original","text":"For the first time, I hit 5M impressions on X in 3 months.\n\nAnd I’m finally starting to make money from it. I changed my whole strategy while on vacation.\n\nBefore, I’d post something original maybe twice a week.\n\nNow I mix it up:\n- quote posts from stuff I’ve bookmarked\n- reposts of my best performing ones\n- original posts as usual\n\nUsually that means a useful URL, skill, tool, app, or a workflow explained in plain words.\n\nI also built an AI workflow that loops through my bookmarks and drafts posts in my voice using memories. But I still write the first draft for many posts, or heavily edit what AI gives me.","textHash":"117ea3e5eff2f3cea2a7176cab5971d342b524b53c1b7efa83466702a0d2d293"}
+{"id":"2078458188626805235","url":"https://x.com/MengTo/status/2078458188626805235","createdAt":"2026-07-18T12:33:42.000Z","format":"reply","text":"the best designers can now push code, open PRs, open-source projects and share highly detailed prompts.","textHash":"e7cb23e4a039e08e8780908888eaf4e02949c1eaf6e1cf6c9ed5792f05d78e35"}
+{"id":"2078454456707133460","url":"https://x.com/MengTo/status/2078454456707133460","createdAt":"2026-07-18T12:18:52.000Z","format":"quote","text":"This is a great list of designers to follow on X. More names in the thread too.\n\nYour feed shapes your taste. Over time, the people you follow, the skills you study, and the prompts you use quietly raise your standards.","textHash":"44d5efa3fcc34b85704428f97d229161774f253c639a7325456311caec84443f"}
+{"id":"2078319170249425059","url":"https://x.com/MengTo/status/2078319170249425059","createdAt":"2026-07-18T03:21:18.000Z","format":"quote","text":"Seriously impressive skill. It turns one long video into a whole scrollable story with the UI built around it.\n\nAnd it works on mobile too.\n\ngithub.com/oso95/scroll-world","textHash":"a0d57c41022c51de4e94e05f04537a9db8376f45100515a9bf7e96b0f8aa9270"}
+{"id":"2078122331172647386","url":"https://x.com/MengTo/status/2078122331172647386","createdAt":"2026-07-17T14:19:08.000Z","format":"reply","text":"Mostly just multiple variations for each.\n\nFacebook used to have SoundKit (discontinued), which was pretty cool, but not in a nice lightweight package like yours.","textHash":"8796d99a35c1ec2addb1ba4541dbb0ae4fa2279b8c2784e8abdb3506ec1a4b5f"}
+{"id":"2078117918940995676","url":"https://x.com/MengTo/status/2078117918940995676","createdAt":"2026-07-17T14:01:36.000Z","format":"reply","text":"would love more sounds! those are fire.","textHash":"ad5a6aa44c0d35a0e6bd4adcdf3dada93160e98085ec0be0c92e16a088297e2e"}
+{"id":"2078115887979352388","url":"https://x.com/MengTo/status/2078115887979352388","createdAt":"2026-07-17T13:53:31.000Z","format":"quote","text":"Super easy to ask Codex to add UI sounds into success, error, and loading states.\n\nEspecially useful for highly interactive sites, games and desktop apps, where sound is an expected part of the interaction.\n\nAlso only 2kb.","textHash":"55b4803e18e0d385b012db9fc8a912d66ead93009ddfbf9db587040930883922"}
{"id":"2077989483144954243","url":"https://x.com/MengTo/status/2077989483144954243","createdAt":"2026-07-17T05:31:14.000Z","format":"reply","text":"Removed on my end, but since I don’t own ui-skills, hopefully that will get synchronized.","textHash":"898c00b675a9fad3953b8a0100c2dc14f9823147b8721541d0f56147b9f51737"}
{"id":"2077935995287441801","url":"https://x.com/MengTo/status/2077935995287441801","createdAt":"2026-07-17T01:58:42.000Z","format":"reply","text":"Sorry about this, this was meant to be submitted by me, but somehow got mixed as me being the author. Removing any skill that is affected!","textHash":"6efbc94ff1eb8b638b47ebf3529bb997aa805672eca0009f7013f04cecba1489"}
{"id":"2077791741793751104","url":"https://x.com/MengTo/status/2077791741793751104","createdAt":"2026-07-16T16:25:29.000Z","format":"quote","text":"Pretty much all the skills you need to create UIs that don't smell like AI.\n\nBut skills alone aren't enough. For landing pages, I usually start with a small prompt, plus screenshots and videos, then ask AI to turn everything into one detailed prompt with Fable or Sol Ultra.\n\nSo small prompt + super context + the right UI skills.\n\nui-skills.com","textHash":"424b965c957352ca4fb87e886a922f589b24250f800265d1cf964b6a1be9ef9a"}
@@ -38,3 +125,18 @@
{"id":"2075958231596429575","url":"https://x.com/MengTo/status/2075958231596429575","createdAt":"2026-07-11T14:59:46.000Z","format":"reply","text":"yep, just dead-simple html","textHash":"93e7fb57c4c815c87c5efd5594891582d9a27ba6b38f77db628f92df30e7a37c"}
{"id":"2075958115141550405","url":"https://x.com/MengTo/status/2075958115141550405","createdAt":"2026-07-11T14:59:18.000Z","format":"reply","text":"i can probably decouple this and open-source","textHash":"19a0135d0a14bb16a6f990d53b1611edead917ead0f75f274fa846fe40e36549"}
{"id":"2075957955774820604","url":"https://x.com/MengTo/status/2075957955774820604","createdAt":"2026-07-11T14:58:40.000Z","format":"reply","text":"html is useful for so many reasons, like landing pages, docs, slides, even video (hyperframes) and basically converting into anything else like react.","textHash":"e5a4ebf7de84f3792cf8a68592cf8121befb07b0496f3c5ca4619679d402ede3"}
+{"id":"2075952204696207528","url":"https://x.com/MengTo/status/2075952204696207528","createdAt":"2026-07-11T14:35:49.000Z","format":"reply","text":"seems like with supabase, this is an easy feat.","textHash":"1fcda4f350eceb5211a1a842ced71d23f4fac14c30dd70d5e98bc1b9af775e99"}
+{"id":"2075906736012349621","url":"https://x.com/MengTo/status/2075906736012349621","createdAt":"2026-07-11T11:35:09.000Z","format":"reply","text":"Would love a link!","textHash":"c9b5df3324edb992626d793f46c57603e3f3407cb3a85adb8ae5e8c5dce48042"}
+{"id":"2075895163411636424","url":"https://x.com/MengTo/status/2075895163411636424","createdAt":"2026-07-11T10:49:09.000Z","format":"reply","text":"Supabase has realtime.","textHash":"8206ad76c21e0f3675f7984589be113145e39383c345366ec0e8042786854e9a"}
+{"id":"2075863500606607749","url":"https://x.com/MengTo/status/2075863500606607749","createdAt":"2026-07-11T08:43:20.000Z","format":"reply","text":"I believe it, but it would also cost an insane amount of tokens. Also, to be fair, there are a lot of things that Figma did invent/were first to do, which paved the way for LLMs, and it would take a surreal amount of prompts to replicate.\n\nFor now, what we can do best is recreate fairly small scopes like infinite canvas. But I love how accurate it is now!","textHash":"21c87f62939722adcd4a1b30e66a8a4d9ff5c8fba8e9ec9cd87c8056c87df0b8"}
+{"id":"2075853318358982931","url":"https://x.com/MengTo/status/2075853318358982931","createdAt":"2026-07-11T08:02:53.000Z","format":"reply","text":"this might be due to the fact that i has a similar feature in my current design mode.","textHash":"d50950b87340f98043b7d821124c194ace85cbfe4fbd84eeff00d44c0b33989f"}
+{"id":"2075851164919452052","url":"https://x.com/MengTo/status/2075851164919452052","createdAt":"2026-07-11T07:54:19.000Z","format":"reply","text":"this is codex using the browser use feature. yes, i'm building on localhost.","textHash":"e7d91305842022b5096605e1e2a2239082fecef927b150209db63fd0a1426563"}
+{"id":"2075851029573455943","url":"https://x.com/MengTo/status/2075851029573455943","createdAt":"2026-07-11T07:53:47.000Z","format":"reply","text":"looks great! ultra was really thorough with the planning and subagents. it was listing everything very clearly.","textHash":"0b182d3cfb571396de245a5e0b4173fa96c91f678b064a15d735b95a931b9f5f"}
+{"id":"2075850743274422373","url":"https://x.com/MengTo/status/2075850743274422373","createdAt":"2026-07-11T07:52:39.000Z","format":"reply","text":"we had to. we were paying too much for tokens.\n\nmost tools switched to token-based. we're still prompt-based.","textHash":"c8439740b90c3d79572224a20e631887ee59cc14a8f065eb798f3052ce2e3229"}
+{"id":"2075850489275855255","url":"https://x.com/MengTo/status/2075850489275855255","createdAt":"2026-07-11T07:51:38.000Z","format":"reply","text":"yes, it's built on top of a codebase, so mainly the controls styling, backend (like supabase, react/vite) and how we manage html/react.","textHash":"43a26934869580c76dacadc433b1fd2fa479d520b2ca67b400b297141aee5d87"}
+{"id":"2075848382174912906","url":"https://x.com/MengTo/status/2075848382174912906","createdAt":"2026-07-11T07:43:16.000Z","format":"reply","text":"Keeping in mind that having context is key. I was building on top of something.\n\nSo try with an open-source project or with a project that already has so basic controls. Or, add a lot of references.","textHash":"a6e1ea039fc0bb8182ee79bdd9bab769da24a56db281371b3d7564525607003f"}
+{"id":"2075847557503451529","url":"https://x.com/MengTo/status/2075847557503451529","createdAt":"2026-07-11T07:39:59.000Z","format":"reply","text":"this is what you can do in one prompt. imagine with hundreds. i saw ultra spawn so many subagents, it was scary for my tokens.","textHash":"c9bb3a658ee50fd9d533d8b133f565a9ace01d02f21fba86cbd11b3c7cc08328"}
+{"id":"2075847005306577235","url":"https://x.com/MengTo/status/2075847005306577235","createdAt":"2026-07-11T07:37:48.000Z","format":"reply","text":"honestly, when it's so cheap to create tools, i'm rethinking my strategy/stance on open-source.\n\nso yes, but i'd need to decouple from\naura.build - it's supposed to be a new feature for it.","textHash":"0b66c238eb219cbd7bc337d0a4dc6aa7d8a47f8ebc2fa8da8cda46f394e8e3f3"}
+{"id":"2075846642465657338","url":"https://x.com/MengTo/status/2075846642465657338","createdAt":"2026-07-11T07:36:21.000Z","format":"reply","text":"true story: i was at universal studios japan and while waiting in line for mario kart castle ride, i used voice in codex with this prompt (no edits, sorry for repetitions):\n\nAll right, so I want you to create an infinite canvas, a little bit like Figma, but in this case, we're gonna have multiple websites that we can generate. So I guess a little bit like Magic Path, a little bit like Paper design tool. So you would be able to design, and the inspector would be on the right side, the left side would be the layers, and then, yeah, you can generate HTML or React, and you can have multiple websites, and you can also generate images and videos, each with their own items. And, yeah, the goal is to have like an infinite canvas that's super easy to use, a little bit like Figma. So we already have an infinite canvas styling, so the styling should, you know, like in the editor and the infinite canvas, we already have the styling taken care of. We just need to do the functionality and make it all fit with the layers on the left, the inspector on the right. You can create multiple canvases, which are basically, them, sites, or React sites, as well as images and videos that you can generate. So let's plan this properly.","textHash":"14aa205c4b570ee0d0acf95a4a7de44b698177704dc6d0ef5168ec158d813055"}
+{"id":"2075845204004012183","url":"https://x.com/MengTo/status/2075845204004012183","createdAt":"2026-07-11T07:30:38.000Z","format":"reply","text":"I keep increasing the complexity of my prompts. this is a sign.","textHash":"e953becac20eb866827ad1b11b48fbc9e3d6c6eb1013e276a704f620692bbe4f"}
+{"id":"2075843206282166674","url":"https://x.com/MengTo/status/2075843206282166674","createdAt":"2026-07-11T07:22:42.000Z","format":"original","text":"I asked GPT 5.6 Sol Ultra to build an infinite canvas for HTML/React designs with layers, an inspector, and even real-time collaboration.\n\nIt pretty much one-shotted the whole thing using planning + sub-agents. It burned through my limits (thanks for the resets!), but holy crap... it barely made any mistakes, and the design taste was way better than I'd expect. I spent almost no time fixing things.\n\nIf this is where design tools are headed, designers/builders with good taste are going to have a ridiculous amount of fun turning ideas into reality with just a few prompts.","textHash":"5adb47380ebee4675edc587e214a0f735bc086633f0b9a79466ea13d0ec3530e"}
diff --git a/agent-skills/codex/write-like-meng-on-x/references/voice-profile.md b/agent-skills/codex/write-like-meng-on-x/references/voice-profile.md
index ae5fbe8..6ac45d0 100644
--- a/agent-skills/codex/write-like-meng-on-x/references/voice-profile.md
+++ b/agent-skills/codex/write-like-meng-on-x/references/voice-profile.md
@@ -1,13 +1,16 @@
# Meng X Voice Profile
-Last evidence update: 2026-07-17 JST
+Last evidence update: 2026-08-01 SGT
## Evidence Base
- A prior live study sampled 100 authored posts from July 4-13, 2026. It established the rule that replies teach conversational phrasing while standalone and quote posts teach structure.
-- The current corpus contains 40 live authored posts from July 11-17, 2026: 1 original post, 34 replies, and 5 quote posts. The latest 20-post batch contains 16 replies and 4 quote posts.
+- The current corpus contains 142 live authored posts from July 11-August 1, 2026: 5 original posts, 120 replies, and 17 quote posts. The latest 20-post batch contains 19 replies and 1 original post.
- Personal, product, resource, and teaching context comes from the Content repo sources indexed in `content-source-map.md`.
-- Recent teaching context is canonical in the Content repo at `articles/2026-07-13-x-history-teaching-strategy.md`, `articles/2026-07-13-agent-skills-business-flywheel/content.md`, and `articles/2026-07-13-ui-prompting-vocabulary/content.md`.
+- Recent teaching context is canonical in the Content repo at `articles/2026-07-13-x-history-teaching-strategy.md`, `articles/2026-07-13-aura-infinite-canvas-agent-workflow/content.md`, `articles/2026-07-13-agent-skills-business-flywheel/content.md`, and `articles/2026-07-13-ui-prompting-vocabulary/content.md`.
+- Recent game-building context is canonical at `articles/2026-07-24-how-i-built-vesperfall/content.md`.
+- Founder context about a useful product with weak sales is canonical at `articles/2026-06-12-dreamcut-failed-sales-strategy/content.md`.
+- Current distribution context is canonical at `articles/2026-07-27-weekly-strategy-meeting.md`.
- `tweet-corpus.jsonl` is the deduplicated source of exact authored wording. This profile stores conclusions, not a second copy of the tweets.
## Who Is Speaking
@@ -24,6 +27,8 @@ Durable beliefs supported across the corpus and Content:
- The best resources help name what is missing. They are not a bookmark graveyard or a template to copy.
- Proof makes teaching useful: screenshots, videos, code, prompts, metrics, before and after, commits, and working products.
- Agents should remove tedious work while leaving direction, intuition, and responsibility with the human.
+- A product can solve its founder's own problem and still lack market proof. Onboarding, positioning, trust, and distribution are separate work.
+- Distribution is part of product survival, not a vanity layer. Useful posts, walkthroughs, and resources can create attention, feedback, sponsorships, or creator income while products find market proof.
## The Sound
@@ -35,6 +40,10 @@ Meng often sounds more spoken than edited. Replies may begin in lower case, use
First person is natural when it adds lived context: `I asked`, `I combine`, `I tested`, `I realized`, `I keep coming back to`. Avoid pretending every lesson happened personally.
+Meng is comfortable naming the role of automation without outsourcing authorship to it. He uses AI for drafting, loops, reminders, and improvement, while still writing many first drafts or heavily editing the result. Keep that human judgment visible when describing an automated content workflow.
+
+When the subject is weak sales, money, or survival, Meng becomes unusually plain. He names the proof, admits the pressure, and explains what the result lets him keep doing. Keep that honest tension; do not rewrite it as a victory lap.
+
Enthusiasm is concrete. Phrases such as `kind of wild`, `incredible`, `crazy good`, `what a time to be a builder`, or `you have my attention` work because a specific tool, result, or question follows them.
Humor is dry and personal rather than performative. The July 14 birthday post opened with turning 44 as the perfect iOS button size, then used that geeky detail to enter a larger reflection.
@@ -48,9 +57,13 @@ Replies are the loosest mode. They are usually one useful reaction, question, cl
Good reply moves:
- ask the implementation question that the original post leaves open
+- when the question is ambiguous, ask one short clarification before explaining
- name one design detail that improved
- add a constraint such as grid size, reference quality, or context switching
+- answer a build question with the smallest useful chain: the reference, asset step, named tool or skill, and the constraint that still needs checking
- expose the hidden cost of a workflow, such as another subscription, tool switch, or review step, then offer a simpler operating choice
+- correct a flashy one-shot interpretation by naming the inherited codebase, existing controls, references, token cost, or planning work that made it possible
+- acknowledge adoption friction, ask for feedback, and offer the smallest personal help such as a walkthrough
- agree with a specific reason
- thank a person directly without a brand voice
- make a small personal joke
@@ -63,6 +76,7 @@ Strong original-post shapes:
- result first, then the workflow behind it
- personal moment, then what changed
+- surprising number, then the old baseline, the behavior change, and the founder consequence
- surprising tool capability, then a walkthrough or proof
- common shallow interpretation, then the system it misses
- useful resource, then how to use it
@@ -78,6 +92,14 @@ A strong resource share often has this order:
3. Related resource, repo, or workflow when useful
4. Link
+When the source is a small tool or skill, Meng often makes the share useful by naming two or three real contexts and one compact proof detail, such as mobile support, interaction states, or bundle size. The proof should explain why the resource is worth trying, not decorate the reaction.
+
+For component and interaction libraries, another useful move is to translate discovery into one direct agent action, then mention the CLI, skill collection, or other implementation support that reduces friction.
+
+An open-source project can be framed as a starting point rather than a finished answer: name the workflow friction, explain where the project fits, then give one concrete next action such as handing the repository to an agent to install, adapt, or improve.
+
+When the source is something an agent can study, Meng often makes the context bundle explicit: the source post or video, live URL, repository or code, and prompt when available. Then he names what the agent can recreate, inspect, or remix. The links are evidence and working material, not an afterthought.
+
Do not append a product pitch unless the connection is real and useful.
### Product Posts
@@ -88,13 +110,15 @@ Avoid feature dumping. Turn features into a scene: what Meng asked for, what the
## Context Meng Naturally Reaches For
-- UI vocabulary, design systems, typography, motion, component boundaries, interaction states, responsive behavior, and visual proof
+- UI vocabulary, design systems, typography, motion, component boundaries, interaction states, responsive behavior, shaders, generative sketches, and visual proof
- AI builders and coding agents, especially Codex, model taste, planning, subagents, skills, verification, browser proof, and commits
- Building and teaching through DesignCode, Aura, DreamCut, and Neuform
+- Building browser games through playable contracts, reference boundaries, hybrid assets, image-to-3D experiments, combat mechanics, performance checks, deterministic review states, and player feedback
- Turning screenshots, videos, references, prompts, and working examples into better agent context
- Resource curation for interface patterns, landing pages, product flows, decks, video, motion, and creative production
- Founder lessons from shipping, selling, debugging, teaching, content systems, and team leverage
-- Travel, building from an iPhone, family time, aging, intuition, and the human perspective behind the work when the subject genuinely connects
+- X as business infrastructure: daily browsing and bookmarks, scheduled drafts, AI-assisted writing, human curation, consistency over one viral post, and distribution income that can help fund continued building
+- Travel, building from an iPhone or by voice while waiting, family time, aging, intuition, and the human perspective behind the work when the subject genuinely connects
## Resource Memory
@@ -142,3 +166,19 @@ Recent combinations that are already spent unless there is a concrete update:
- Sol as a design model + video-to-HTML + a walkthrough + the open-source Skills repo
- open-ended prompting + an agent-written plan + isolated threads + per-change commits
- UI vocabulary + interactive examples + the Name That UI, Collect UI, and Mobbin resource bundle
+- three-month X growth proof + a vacation strategy reset + bookmarked quote posts, selective reposts, original posts, and memory-assisted drafts
+- exact creator-payout proof + 1.9M impressions in two weeks + posting twice daily + quote-post recommendations + declining tool revenue + sponsorships and X income funding projects
+- designer follow list + the claim that a feed quietly shapes taste and standards
+- generated UI sounds + success, error, and loading states + interactive sites, games, desktop apps, and a tiny bundle-size proof
+- Codex daily-driver praise + a broad Sites, Skills, search, browser, mobile-permission, and second-brain wishlist
+- one image + editable Three.js code + scroll effects, product demos, and interactive experiences + the editable-vector and 3D gap
+- Codex, Claude Code, and Cursor multitasking friction + the Mac notch + paste an open-source repository into an agent to adapt it
+- three free Jakub Antalik libraries + the promise that vibe-coded projects will look less generic
+- Aura infinite canvas + one-shot framing + inherited codebase context + planning, subagents, references, and token cost
+- Vesperfall + Codex from scratch + img2threejs or hybrid assets + named game-development skills + one-afternoon or multi-day proof; recent replies have already covered public access, assets, performance, genre comparisons, and possible additions, so revisit only with a newly shipped state or stronger proof
+- one source post with video and repository + live reference + an agent recreating the mechanics as a new 3D UI experiment
+- a tiny p5.js sketch + Codex conversion to standalone HTML + particle remixes + the SVG limitation
+- a no-AI-slop skill paired with the Meng voice skill + the promise of five personal versions
+- Opus 5 game proof + shared source code and prompt + study the exact input and implementation
+- Opus 5 product-video camera moves + an eight-minute workflow tutorial
+- Codex landing-page harness + open-source web-design skills + the full walkthrough + Higgsfield MCP, Canvas UI, and Shaders resource bundle