Token导航 LogoToken导航

Agent Skill · 研究检索

slidev-magic-move(幻灯片魔法动作)

slidev-magic-move 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

slidev-magic-move 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证为 MIT,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 37,042。

总安装 1,812周安装 74GitHub Stars 27下载 580核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:slidev-magic-move(幻灯片魔法动作)
来源仓库:https://github.com/yoanbernabeu/slidev-skills
仓库路径:skills/slidev-magic-move
安装命令:
npx skills add https://github.com/yoanbernabeu/slidev-skills --skill slidev-magic-move
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/yoanbernabeu/slidev-skills --skill slidev-magic-move

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

slidev-magic-move 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词快速定位候选结果时使用。适用于 Slidev 演示文稿中的动画过渡效果研究与实现场景。

通过 npx skills add 命令从 GitHub 安装,需结合原始 README 确认具体用法。安装前建议确认权限范围和维护状态,避免触发不必要的联网或文件操作。注意该技能当前无详细功能说明,建议进一步查阅源码以了解实际能力边界。

来源仓库内路径:skills/slidev-magic-move

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/yoanbernabeu/slidev-skills --skill slidev-magi…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

slidev-magic-move 怎么安装?

在终端执行 npx skills add https://github.com/yoanbernabeu/slidev-skills --skill slidev-magic-move。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

slidev-magic-move 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

slidev-magic-move 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

slidev-magic-move 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

slidev-magic-move 用的人多吗?

公开数据是累计安装 1,812 次,近一周安装 74 次,下载 580 次,GitHub 27 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

slidev-magic-move 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
slidev-magic-move

幻灯片魔法动作 · 本页

1,81227需要联网MIT通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Shiki Magic Move

This skill covers Shiki Magic Move, a powerful feature that creates smooth animated transitions between different code states, similar to Keynote's Magic Move effect.

When to Use This Skill

  • Showing code evolution step by step
  • Refactoring demonstrations
  • Before/after code comparisons
  • Tutorial walkthroughs
  • Animated code transformations

How Magic Move Works

Magic Move analyzes two code blocks and:

  1. Identifies unchanged tokens
  2. Finds moved/renamed tokens
  3. Detects added/removed tokens
  4. Animates the transition smoothly

Basic Syntax

Use 4 backticks with md magic-move:

console.log('Hello')
console.log('Hello, World!')

Each code block represents a step, animated on click.

Step-by-Step Example

Refactoring Journey

// Step 1: Original code
function add(a, b) {
  return a + b
}
// Step 2: Add types
function add(a: number, b: number) {
  return a + b
}
// Step 3: Add return type
function add(a: number, b: number): number {
  return a + b
}
// Step 4: Convert to arrow function
const add = (a: number, b: number): number => a + b

Multiple Steps

const name = 'world'
const name = 'world'
const greeting = 'Hello'
const name = 'world'
const greeting = 'Hello'
console.log(`${greeting}, ${name}!`)
const name = 'world'
const greeting = 'Hello'
console.log(`${greeting}, ${name}!`)
// Output: Hello, world!

Combining with Line Highlighting

Add highlights within Magic Move:

const a = 1
const b = 2
const c = 3
const sum = 1 + 2 + 3

Advanced Options

Control Animation Timing

// Starts at click 3
const x = 1
const x = 1
const y = 2

Disable Line Numbers

const x = 1
const x = 2

Combined Options

const first = 1
const second = 2
const result = first + second

Real-World Examples

React Hook Evolution

// Class component state
class Counter extends React.Component {
  state = { count: 0 }

  increment = () => {
    this.setState({ count: this.state.count + 1 })
  }

  render() {
    return (
      <button onClick={this.increment}>
        {this.state.count}
      </button>
    )
  }
}
// Function component with useState
function Counter() {
  const [count, setCount] = useState(0)

  const increment = () => {
    setCount(count + 1)
  }

  return (
    <button onClick={increment}>
      {count}
    </button>
  )
}
// Simplified with inline handler
function Counter() {
  const [count, setCount] = useState(0)

  return (
    <button onClick={() => setCount(c => c + 1)}>
      {count}
    </button>
  )
}

API Evolution

// Callbacks
function fetchUser(id, callback) {
  fetch(`/api/users/${id}`)
    .then(res => res.json())
    .then(data => callback(null, data))
    .catch(err => callback(err, null))
}

fetchUser(1, (err, user) => {
  if (err) console.error(err)
  else console.log(user)
})
// Promises
function fetchUser(id) {
  return fetch(`/api/users/${id}`)
    .then(res => res.json())
}

fetchUser(1)
  .then(user => console.log(user))
  .catch(err => console.error(err))
// Async/Await
async function fetchUser(id) {
  const res = await fetch(`/api/users/${id}`)
  return res.json()
}

try {
  const user = await fetchUser(1)
  console.log(user)
} catch (err) {
  console.error(err)
}

Building a Function

function processData() {

}
function processData(data) {

}
function processData(data: string[]) {

}
function processData(data: string[]): string[] {
  return data
}
function processData(data: string[]): string[] {
  return data
    .filter(item => item.length > 0)
}
function processData(data: string[]): string[] {
  return data
    .filter(item => item.length > 0)
    .map(item => item.trim())
}
function processData(data: string[]): string[] {
  return data
    .filter(item => item.length > 0)
    .map(item => item.trim())
    .sort((a, b) => a.localeCompare(b))
}

SQL Query Building

SELECT * FROM users
SELECT id, name, email FROM users
SELECT id, name, email FROM users
WHERE active = true
SELECT id, name, email FROM users
WHERE active = true
ORDER BY created_at DESC
SELECT id, name, email FROM users
WHERE active = true
ORDER BY created_at DESC
LIMIT 10

Patterns and Tips

Start Simple, Add Complexity

// Start with the goal
const result = processData(input)
// Show the implementation
function processData(input) {
  return input
}

const result = processData(input)
// Add details
function processData(input) {
  return input
    .filter(x => x != null)
    .map(x => transform(x))
}

const result = processData(input)

Show Problem Then Solution

// Problem: Callback hell
getData(function(a) {
  getMoreData(a, function(b) {
    getMoreData(b, function(c) {
      getMoreData(c, function(d) {
        // Finally done
      })
    })
  })
})
// Solution: Promises
getData()
  .then(a => getMoreData(a))
  .then(b => getMoreData(b))
  .then(c => getMoreData(c))
  .then(d => {
    // Clean and flat!
  })

Highlight Changes with Comments

const config = {
  debug: true,
  timeout: 1000
}
const config = {
  debug: false,    // Changed!
  timeout: 1000
}
const config = {
  debug: false,
  timeout: 5000    // Increased!
}

Best Practices

  1. Small Steps: Each transition should show one logical change
  2. Maintain Context: Keep surrounding code visible when possible
  3. Use Comments: Add comments to explain what's changing
  4. Consistent Style: Keep formatting consistent across steps
  5. Test the Animation: Verify smooth transitions before presenting

Common Mistakes

❌ Too many changes at once

Step 1: Original code
Step 2: Completely different code

✓ Incremental changes

Step 1: Original
Step 2: Add one feature
Step 3: Add another feature
Step 4: Refactor

❌ Lost context

Step 1: function foo() { ... }
Step 2: const bar = ...  // Where did foo go?

✓ Preserved context

Step 1: function foo() { ... }
Step 2: function foo() { const bar = ... }

Interactive Playground

Try Magic Move at: https://shiki-magic-move.netlify.app/

Output Format

When creating Magic Move animations:

ANIMATION GOAL: [What transformation are you showing?]

STEPS:
1. [Initial state - describe]
2. [Change 1 - describe]
3. [Change 2 - describe]
...

CODE:
[Step 1 code]
[Step 2 code]

...

SPEAKER NOTES:
- Step 1: [What to say]
- Step 2: [What to say]

平台分布

Claude Code

25.72%
按下载量换算149

Antigravity

24.69%
按下载量换算143

OpenCode

16.51%
按下载量换算96

Codex

13.14%
按下载量换算76

Gemini CLI

7.41%
按下载量换算43

continue

3.72%
按下载量换算22

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

继续浏览同类 Skills