diff --git a/src/plugin-dev-guide/quick-start/README.md b/src/plugin-dev-guide/quick-start/README.md
index 075cc3f5..92a04444 100644
--- a/src/plugin-dev-guide/quick-start/README.md
+++ b/src/plugin-dev-guide/quick-start/README.md
@@ -7,3 +7,112 @@
待完善,请参阅插件仓库:[Make It Red](https://github.com/zotero/make-it-red/tree/main/src-2.0)
:::
+
+## Zotero 插件的经典目录结构
+
+```bash
+northword@Yoga-Northword MINGW64 /d/Code/Zotero/make-it-red-main/src-2.0
+$ tree
+.
+|-- bootstrap.js
+|-- locale
+| `-- en-US
+| `-- make-it-red.ftl
+|-- make-it-red.js
+|-- manifest.json
+|-- prefs.js
+`-- style.css
+
+2 directories, 6 files
+```
+
+其中,`manifest.json` 和 `bootstrap.js` 两个文件是一个 Zotero 插件必须包含的文件。前者是插件的清单文件,用来描述插件的名称、ID 等信息,后者是插件的引导文件,告诉 Zotero 应如何启动和关闭插件。
+
+`locale/` 目录存放了 Zotero 的本地化文件,这个目录下,每种语言都有一个单独的文件夹,在每种语言的子目录下,存放了包含本地化后的字符串。
+
+`prefs.js` 包含了插件的默认设置。
+
+`make-it-red.js` 包含了插件的主要逻辑代码。
+
+`style.css` 是插件的样式文件。
+
+对于每种文件详细的说明可以在 [参考](../reference/) 中了解。在本节,我们仅关注 `manifest.json`, `bootstrap.js` 和 `make-it-red.js` 三个文件。
+
+## 基本逻辑解析
+
+### 插件清单
+
+在 `manifest.json` 中,
+
+```json
+{
+ "manifest_version": 2,
+ "name": "Make It Red",
+ "version": "2.0",
+ "description": "Makes everything red",
+ "homepage_url": "https://github.com/zotero/make-it-red",
+ "applications": {
+ "zotero": {
+ "id": "make-it-red@example.com",
+ "update_url": "https://zotero-download.s3.amazonaws.com/tmp/make-it-red/updates-2.0.json",
+ "strict_min_version": "6.999",
+ "strict_max_version": "7.0.*"
+ }
+ }
+}
+```
+
+`name` 规定了插件名为 `Make It Red`,`version` 规定插件的版本号为 `2.0`,`applications.zotero.id` 定义插件的 ID [^id] 为 `make-it-red@example.com`。其他字段的含义暂不深究,读者可在 [清单文件](../reference/manifest.md) 中了解。
+
+[^id]: ID 是插件的身份证号码,是 Zotero 识别插件的唯一代码。
+
+### 逻辑代码
+
+在 `bootstrap.js` 中,有这样几个钩子:
+
+```js
+async function startup({ id, version, rootURI }) {
+ log("Starting 2.0");
+
+ Services.scriptloader.loadSubScript(rootURI + "make-it-red.js");
+ MakeItRed.init({ id, version, rootURI });
+ MakeItRed.addToAllWindows();
+ await MakeItRed.main();
+}
+```
+
+将在插件被启用时调用,在这个钩子中,加载了 `make-it-red.js` 脚本(这个脚本中定义了 `MakeItRed` 对象,见后文)。然后依次调用了 `MakeItRed` 对象的 `init`, `addToAllWindows` 和 `main` 三个方法。
+
+在 `make-it-red.js` 中,定义了对象 `MakeItRed` ,其中
+
+```js
+var MakeItRed = {
+ addToWindow(window) {
+ let doc = window.document;
+
+ // Add a stylesheet to the main Zotero pane
+ let link1 = doc.createElement("link");
+ link1.id = "make-it-red-stylesheet";
+ link1.type = "text/css";
+ link1.rel = "stylesheet";
+ link1.href = this.rootURI + "style.css";
+ doc.documentElement.appendChild(link1);
+ this.storeAddedElement(link1);
+
+ // ...
+ },
+};
+```
+
+创建了一个 `` 元素,如下,
+
+```html
+
+```
+
+并将其附加到了 `window.document` 上。
diff --git a/src/plugin-dev-guide/reference/bootstrap.md b/src/plugin-dev-guide/reference/bootstrap.md
index 968b616e..d8e1422a 100644
--- a/src/plugin-dev-guide/reference/bootstrap.md
+++ b/src/plugin-dev-guide/reference/bootstrap.md
@@ -32,11 +32,11 @@ function uninstall(data, reason) {}
插件生命周期挂钩传递两个参数:
-- 具有以下属性的对象:
+- `data`: 具有以下属性的对象:
- `id` ,插件 ID
- `version` ,插件版本
- `rootURI` ,指向插件文件的字符串 URL。对于 XPI,这将是 `jar:file:///` URL。该值始终以斜杠结尾,因此您可以附加相对路径来获取与插件捆绑的文件的 URL(例如 `rootURI + 'style.css'` )。
-- 表示事件原因的数字,可以根据以下常量进行检查: `APP_STARTUP` 、 `APP_SHUTDOWN` 、 `ADDON_ENABLE` 、 `ADDON_DISABLE` 、 `ADDON_INSTALL` 、 `ADDON_UNINSTALL` 、 `ADDON_UPGRADE` 、 `ADDON_DOWNGRADE`
+- `reason`: 表示事件原因的数字,可以根据以下常量进行检查: `APP_STARTUP` 、 `APP_SHUTDOWN` 、 `ADDON_ENABLE` 、 `ADDON_DISABLE` 、 `ADDON_INSTALL` 、 `ADDON_UNINSTALL` 、 `ADDON_UPGRADE` 、 `ADDON_DOWNGRADE`
任何与特定窗口无关的初始化都应由 `startup` 触发,删除应由 `shutdown` 触发。