Markbind Typescript Migration
MarkBind/markbind
Complete guide for migrating JavaScript files to TypeScript in the MarkBind project, including the two-commit strategy, import/export syntax conversion, and best practices.
Build, debug, or review Logseq plugins with the @logseq/libs SDK (TypeScript/JavaScript, iframe/shadow sandboxed).
$ npx skills add logseq/logseq --skill logseq-plugin-sdk -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install logseq/logseq logseq-plugin-sdk --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/logseq/logseq.git skills-src && mkdir -p .claude/skills && cp -r skills-src/libs .claude/skills/logseq-plugin-sdk && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "logseq-plugin-sdk" agent skill from https://github.com/logseq/logseq/tree/master/libs into .claude/skills/logseq-plugin-sdk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logseq-plugin-sdk", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/logseq/logseq/tree/master/libsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add logseq/logseq --skill logseq-plugin-sdk -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install logseq/logseq logseq-plugin-sdk --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/logseq/logseq.git skills-src && mkdir -p .agents/skills && cp -r skills-src/libs .agents/skills/logseq-plugin-sdk && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "logseq-plugin-sdk" agent skill from https://github.com/logseq/logseq/tree/master/libs into .agents/skills/logseq-plugin-sdk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logseq-plugin-sdk", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add logseq/logseq --skill logseq-plugin-sdk -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install logseq/logseq logseq-plugin-sdk --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/logseq/logseq.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/libs .cursor/skills/logseq-plugin-sdk && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "logseq-plugin-sdk" agent skill from https://github.com/logseq/logseq/tree/master/libs into .cursor/skills/logseq-plugin-sdk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logseq-plugin-sdk", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/logseq/logseq.git --path libs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add logseq/logseq --skill logseq-plugin-sdk -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install logseq/logseq logseq-plugin-sdk --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/logseq/logseq.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/libs .gemini/skills/logseq-plugin-sdk && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "logseq-plugin-sdk" agent skill from https://github.com/logseq/logseq/tree/master/libs into .gemini/skills/logseq-plugin-sdk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logseq-plugin-sdk", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install logseq/logseq logseq-plugin-sdkInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add logseq/logseq --skill logseq-plugin-sdk -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/logseq/logseq.git skills-src && mkdir -p .github/skills && cp -r skills-src/libs .github/skills/logseq-plugin-sdk && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "logseq-plugin-sdk" agent skill from https://github.com/logseq/logseq/tree/master/libs into .github/skills/logseq-plugin-sdk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logseq-plugin-sdk", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add logseq/logseq --skill logseq-plugin-sdk -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install logseq/logseq logseq-plugin-sdk --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/logseq/logseq.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/libs .opencode/skills/logseq-plugin-sdk && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "logseq-plugin-sdk" agent skill from https://github.com/logseq/logseq/tree/master/libs into .opencode/skills/logseq-plugin-sdk/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logseq-plugin-sdk", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
logseq-plugin-sdkBuild, debug, or review Logseq plugins with the @logseq/libs SDK (TypeScript/JavaScript, iframe/shadow sandboxed).
Logseq Plugin SDK is an agent skill from logseq/logseq. Build, debug, or review Logseq plugins with the @logseq/libs SDK (TypeScript/JavaScript, iframe/shadow sandboxed). Use when the task involves writing plugin entry code, registering slash/command/UI items, provideUI/provideStyle/provideModel, settings schema, macro renderers, DB-graph properties & tags, Datascript/DSL queries, experimental APIs, theme plugins, or the logseq/ CLJS facade generated under this package.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 61 other files, including scripts (for example `.prettierrc.js`, `CHANGELOG.md` and `README.md`).
It sits in Knowledge Management, covering Hooks and plugins. It works with JavaScript, TypeScript, npm and Git. The repository describes itself as: A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: https://logseq.io/p/NX4mcggEV. The licence is AGPL-3.0.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 22a29b3. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (JavaScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
yarnnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.complugins-doc.logseq.comdiscord.ggFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Logseq Plugin SDK loads about 2.3k tokens when it runs. Until then it costs about 110 tokens; SKILL.md has 752 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from logseq/logseq at commit 22a29b3, republished under its AGPL-3.0 licence (© logseq). 752 words, ~2,288 tokens.
.claude/skills/logseq-plugin-sdk/SKILL.md (or your agent's skills folder). This skill also uses 57 other files; get the full folder from GitHub.This skill governs work inside libs/ — the source of the npm package @logseq/libs and its CLJS facade under cljs-sdk/. Use it whenever the user is authoring, upgrading, or debugging a Logseq plugin, or extending the SDK itself.
Trigger this skill when the task mentions any of:
@logseq/libs, logseq.App, logseq.Editor, logseq.DB, logseq.UI, logseq.Assets, logseq.Git, logseq.ExperimentsprovideUI / provideStyle / provideModel / useSettingsSchema / onMacroRendererSlottedregisterSlashCommand, registerBlockContextMenuItem, registerCommandPalette, registerUIItempackage.json logseq block, themes, effect plugins, iframe/shadow sandbox:logseq.property/*, :plugin.property.<id>/*)logseq.DB.q / logseq.DB.datascriptQueryyarn run generate:schema, bb libs:generate-cljs-sdk)If the user is editing core Logseq app code (not a plugin), prefer the repo-root AGENTS.md instead.
await logseq.ready(main) before touching any API. Most SDK calls are async RPC over postMessage.await logseq.App.checkCurrentIsDbGraph(). IBatchBlock.properties is not supported for DB graphs — use Editor.upsertBlockProperty / upsertProperty instead.logseq.beforeunload (collect the off functions returned by every onXxx hook).Editor.insertBatchBlock) and debounce DB.onChanged / onBlockChanged handlers — they fire on every keystroke.--ls-primary-text-color, --ls-primary-background-color, --ls-border-color, …) over hard-coded colors so plugins follow the active theme.package.json > logseq.id; keep it lowercase-kebab. main/entry must point at a built HTML file.logseq.Experiments.*) are unstable — only use when no stable API exists and document the reason.:logseq.property/created-at, :plugin.property.<plugin-id>/<key>) instead of display names.import '@logseq/libs'
const offHooks: Array<() => void> = []
async function main() {
logseq.useSettingsSchema([
{ key: 'enabled', type: 'boolean', default: true, title: 'Enabled', description: '' },
])
logseq.Editor.registerSlashCommand('My Command', async () => {
await logseq.Editor.insertAtEditingCursor('Hello from my plugin!')
})
offHooks.push(
logseq.DB.onChanged(({ blocks }) => {
// debounce in real code
}),
)
logseq.beforeunload(async () => {
offHooks.forEach((off) => off())
})
}
logseq.ready(main).catch(console.error)./guides/ (see table below) before proposing code../src/ (LSPlugin.ts for types, LSPlugin.user.ts for the proxy implementation, modules/ for Experiments/Storage/Request).yarn run generate:schema # dist/logseq-sdk-schema.json
bb libs:generate-cljs-sdk # target/generated-cljs/logseq/*.cljslogseq.core; each IXxxProxy gets its own namespace (logseq.app, logseq.editor, …).npm run build / parcel build) and load it via Settings → Developer mode → t p → Load unpacked plugin. Use DevTools (Cmd+Shift+I) and logseq.UI.showMsg for quick feedback.guides/AGENTS.md §Configuration Fields)../guides/)Load these on demand — do not dump their full contents unless needed:
| File | Load when… |
|---|---|
guides/AGENTS.md | Authoritative overview of SDK namespaces, package.json > logseq schema, theme plugins, UI injection, macro renderers, lifecycle. Start here for most plugin tasks. |
guides/custom_theme_guide.md | Building or reviewing Logseq theme plugins, custom theme CSS, logseq.themes, provideTheme, theme variables, light/dark mode styling, or UI selector/theme-token guidance. |
guides/starter_guide.md | Bootstrapping a new plugin project (Node/TS toolchain, desktop dev-mode loading, hello-world). |
guides/commands_api_guide.md | logseq.Commands unified command bus, placements, command execution, unregister handlers, and migration from legacy command APIs. |
guides/db_properties_guide.md | Conceptual model: file-graph vs DB-graph properties, schema vs values, tag/class modeling. |
guides/db_properties_references.md | API reference for upsertProperty, upsertBlockProperty, property schemas/types/cardinality. |
guides/db_tag_property_idents_guide.md | Ident naming rules (:logseq.property/*, :logseq.class/*, :plugin.property.<id>/*, :plugin.class.<id>/*) and when to use them. |
guides/db_query_guide.md | DSL (logseq.DB.q) vs Datascript (logseq.DB.datascriptQuery) queries, parameters, change watchers. |
guides/experiments_api_guide.md | logseq.Experiments.* — React/ReactDOM reuse, internal components, CLJS interop, custom fenced-code / route / sidebar / property / block-body renderers. |
Full code examples live in guides/AGENTS.md — use this table to jump to the right namespace:
logseq.App — info, graph, navigation, registerUIItem, registerCommandPalette, lifecycle hooks (onCurrentGraphChanged, onThemeModeChanged, onRouteChanged, onMacroRendererSlotted), checkCurrentIsDbGraph.logseq.Editor — slash & context-menu commands, block CRUD, insertBatchBlock, pages, cursor/selection, upsertBlockProperty / getBlockProperties (DB).logseq.DB — q, datascriptQuery, onChanged, onBlockChanged, getFileContent / setFileContent.logseq.UI — showMsg, closeMsg, queryElementRect, queryElementById.logseq.Assets — listFilesOfCurrentGraph, makeSandboxStorage, makeUrl, builtInOpen.logseq.Git — execCommand, loadIgnoreFile, saveIgnoreFile (file graphs / desktop only).logseq.Experiments — unstable; see the Experiments guide before using.provideUI, provideStyle, provideModel, useSettingsSchema, onSettingsChanged, updateSettings, showMainUI / hideMainUI / toggleMainUI / setMainUIInlineStyle, beforeunload, ready.await — nearly every API is async.IBatchBlock.properties in a DB graph (silently ignored).block.content as current — it is deprecated; use block.title.key twice in provideUI / provideStyle without intending to replace.--ls-* CSS variables.beforeunload).logseq.id or with a non-unique id.src/LSPlugin.ts. Keep IAppProxy, IEditorProxy, IDBProxy, IUIProxy, IAssetsProxy, IGitProxy, IExperimentsProxy and the ILSPluginUser surface in sync.src/LSPlugin.user.ts.src/modules/ (Experiments, Storage, Request).CHANGELOG.md.enhance(libs): …, fix(libs): …).© logseq, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 57 other files (scripts) in libs of logseq/logseq.
Open the folder on GitHubat commit 22a29b3
Logseq Plugin SDK next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Logseq Plugin SDK this skilllogseq/logseq | 45k | — | ~2.3k | Automated safety check: Pass | AGPL-3.0 | |
| Markbind Typescript MigrationMarkBind/markbind | 158 | — | ~2k | Automated safety check: Pass | MIT | |
| Release TS SDKaptos-labs/aptos-ts-sdk | 116 | — | ~864 | Automated safety check: Pass | Custom licence | |
| Check npmgrafana/skills | 278 | — | ~1.3k | Automated safety check: Warn | Apache-2.0 | |
| Compare Array Bundle SizePostHog/posthog-js | 613 | — | ~599 | Automated safety check: Pass | Custom licence | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT |
MarkBind/markbind
Complete guide for migrating JavaScript files to TypeScript in the MarkBind project, including the two-commit strategy, import/export syntax conversion, and best practices.
aptos-labs/aptos-ts-sdk
A skill your agent uses when cutting a release of @aptos-labs/ts-sdk or @aptos-labs/confidential-asset.
grafana/skills
Audit a JavaScript/TypeScript repo's npm, yarn, or pnpm configuration for supply-chain hardening: tool version, lifecycle scripts, unsafe dependency protocols, and minimum release age ≥3 days.
PostHog/posthog-js
Quickly compare the posthog-js array.js bundle size in the current working tree against a git baseline using the repository's esbuild proxy.
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
dmmulroy/anti-slop
Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.
logseq/logseq
Compare two revisions of the Logseq logseq-review-workflow skill by running the same review prompt against isolated before and after skill snapshots, collecting both outputs, and producing a…
logseq/logseq
Scan Logseq ClojureScript Node/Electron targets for npm module loading risks, especially ESM-only packages that may fail when loaded through js/require or shadow-cljs require-based shims.
logseq/logseq
Operate the current Logseq command-line interface to inspect or modify graphs, pages, blocks, tasks, tags, and properties; run Datascript queries; show page/block trees; manage graphs; and manage…
logseq/logseq
Audit, plan, and refresh dependency upgrades for the Logseq repository by scanning every non-gitignored package.json, deps.edn, bb.edn and nbb.edn manifest, checking latest upstream versions…
logseq/logseq
Logseq i18n workflow for adding, renaming, reviewing, or editing translation keys and user-facing strings.
logseq/logseq
Answer user questions about the Logseq repository by researching source code, docs, tests, runtime behavior, and local tools.
Works with
Categories
Build, debug, or review Logseq plugins with the @logseq/libs SDK (TypeScript/JavaScript, iframe/shadow sandboxed). Logseq Plugin SDK is an agent skill from logseq/logseq. Build, debug, or review Logseq plugins with the @logseq/libs SDK (TypeScript/JavaScript, iframe/shadow sandboxed).
Logseq Plugin SDK fits situations like: the task involves writing plugin entry code; registering slash/command/UI items; provideUI/provideStyle/provideModel; settings schema.
Run `npx skills add logseq/logseq --skill logseq-plugin-sdk -a claude-code`. Or copy the skill folder (libs in logseq/logseq) into .claude/skills/logseq-plugin-sdk in your project. Claude Code loads it when a task matches its description.
Run `npx skills add logseq/logseq --skill logseq-plugin-sdk -a codex`. Or copy the skill folder (libs in logseq/logseq) into .agents/skills/logseq-plugin-sdk in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add logseq/logseq --skill logseq-plugin-sdk -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/logseq-plugin-sdk, .gemini/skills/logseq-plugin-sdk, .github/skills/logseq-plugin-sdk and .opencode/skills/logseq-plugin-sdk in your project.
Going by SKILL.md and its folder, Logseq Plugin SDK needs JavaScript for the scripts in its folder and the command-line tools its instructions call (yarn and npm). Our summary lists: Node.js.
SKILL.md names 3 domains. As links in the text: github.com, plugins-doc.logseq.com and discord.gg. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Logseq Plugin SDK is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Logseq Plugin SDK: Markbind Typescript Migration (MarkBind/markbind, 158 stars), Release TS SDK (aptos-labs/aptos-ts-sdk, 116 stars), Check npm (grafana/skills, 278 stars) and Compare Array Bundle Size (PostHog/posthog-js, 613 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
logseq (a GitHub organization) maintains it in logseq/logseq, which has 45,158 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 7, 2026.
Source: logseq/logseq on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.