@mmmbuto/qwen-code-termux 0.16.1-termux → 0.18.0-termux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/README.md +79 -109
  2. package/bundled/new-app/SKILL.md +22 -0
  3. package/bundled/qc-helper/SKILL.md +29 -24
  4. package/bundled/qc-helper/docs/_meta.ts +1 -0
  5. package/bundled/qc-helper/docs/configuration/_meta.ts +0 -3
  6. package/bundled/qc-helper/docs/configuration/settings.md +37 -31
  7. package/bundled/qc-helper/docs/configuration/themes.md +39 -0
  8. package/bundled/qc-helper/docs/features/_meta.ts +1 -3
  9. package/bundled/qc-helper/docs/features/approval-mode.md +35 -35
  10. package/bundled/qc-helper/docs/features/auto-mode.md +54 -9
  11. package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  12. package/bundled/qc-helper/docs/features/channels/feishu.md +170 -0
  13. package/bundled/qc-helper/docs/features/commands.md +115 -35
  14. package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
  15. package/bundled/qc-helper/docs/features/headless.md +32 -0
  16. package/bundled/qc-helper/docs/features/markdown-rendering.md +21 -1
  17. package/bundled/qc-helper/docs/features/memory.md +22 -5
  18. package/bundled/qc-helper/docs/features/scheduled-tasks.md +1 -1
  19. package/bundled/qc-helper/docs/features/status-line.md +168 -32
  20. package/bundled/qc-helper/docs/features/sub-agents.md +60 -0
  21. package/bundled/qc-helper/docs/features/worktree.md +345 -0
  22. package/bundled/qc-helper/docs/overview.md +4 -4
  23. package/bundled/qc-helper/docs/quickstart.md +4 -4
  24. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +221 -0
  25. package/bundled/qc-helper/docs/qwen-serve.md +234 -24
  26. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +16 -0
  27. package/bundled/qc-helper/docs/support/Uninstall.md +19 -1
  28. package/bundled/qc-helper/docs/support/troubleshooting.md +2 -1
  29. package/bundled/simplify/SKILL.md +123 -0
  30. package/chunks/agent-IDS4HMOX.js +56 -0
  31. package/chunks/agent-headless-5Q2EUSPS.js +50 -0
  32. package/chunks/{anthropicContentGenerator-SSGKR6DO.js → anthropicContentGenerator-2HBRNQ3B.js} +52 -9
  33. package/chunks/{askUserQuestion-PJWUUXKN.js → askUserQuestion-75TDJVK2.js} +45 -3
  34. package/chunks/{ca-UZ7BANMN.js → ca-BARBRL6N.js} +89 -5
  35. package/chunks/{chunk-GGNTZ2NH.js → chunk-2Y5SYSD3.js} +368 -597
  36. package/chunks/{chunk-2LA2TREA.js → chunk-3AA2DK35.js} +1448 -207
  37. package/chunks/{chunk-I2V5WXHJ.js → chunk-3AUHFMSK.js} +80 -38
  38. package/chunks/chunk-3DHXZ6EV.js +241 -0
  39. package/chunks/{chunk-PR4T27R7.js → chunk-3HTIVKZE.js} +42 -8
  40. package/chunks/chunk-3HX5LZ6R.js +1798 -0
  41. package/chunks/chunk-3PJXIDKI.js +2517 -0
  42. package/chunks/{chunk-MYAKAFEC.js → chunk-55ZMG67I.js} +7451 -3517
  43. package/chunks/{chunk-66CXYE4B.js → chunk-5IFG2VC4.js} +293 -242
  44. package/chunks/chunk-64WXLC72.js +98 -0
  45. package/chunks/{chunk-C6WMLUNB.js → chunk-72LDN5PP.js} +1 -1
  46. package/chunks/{chunk-F23NCRJ2.js → chunk-A7B4ISQP.js} +1 -1
  47. package/chunks/chunk-B7HXHOHU.js +393 -0
  48. package/chunks/{chunk-XEGHDASV.js → chunk-D3RHSPAS.js} +435 -540
  49. package/chunks/{chunk-XKS5KBFJ.js → chunk-EYENRK4D.js} +694 -384
  50. package/chunks/chunk-H6BD2ELD.js +36 -0
  51. package/chunks/{chunk-XP27SJMH.js → chunk-HR7SV7AY.js} +79 -48
  52. package/chunks/{chunk-D5NTAHYL.js → chunk-IDX6COTE.js} +7 -2
  53. package/chunks/{chunk-SHT4VJWU.js → chunk-IWKSG2AR.js} +2 -2
  54. package/chunks/chunk-J37FGIOA.js +1623 -0
  55. package/chunks/chunk-J5MDQKJL.js +2230 -0
  56. package/chunks/{chunk-USE2VQ5P.js → chunk-JTQAQBTV.js} +21 -0
  57. package/chunks/{chunk-NCTLV2NB.js → chunk-KQJMQJPI.js} +1 -1
  58. package/chunks/{chunk-5FBA5XC2.js → chunk-KRIHGKNA.js} +1 -1
  59. package/chunks/chunk-LD2XBG6Z.js +102 -0
  60. package/chunks/{chunk-MAY32HXD.js → chunk-M6VTDSVR.js} +3 -1
  61. package/chunks/chunk-MRO43B25.js +30 -0
  62. package/chunks/{chunk-N4WOREMD.js → chunk-NVFMZBX2.js} +43 -3
  63. package/chunks/chunk-OHEGWO4L.js +264 -0
  64. package/chunks/{chunk-K6O2NBMF.js → chunk-OQ7NJIY7.js} +4604 -6397
  65. package/chunks/chunk-QQDPRDVW.js +25 -0
  66. package/chunks/{chunk-KXZ4TJB4.js → chunk-SEGYWKIH.js} +1 -1
  67. package/chunks/chunk-SKBPNJEW.js +45 -0
  68. package/chunks/{chunk-4AOCVI6J.js → chunk-SNGELLWX.js} +52 -6
  69. package/chunks/{chunk-3OCRHZA3.js → chunk-TD4OPI4T.js} +56742 -44104
  70. package/chunks/{chunk-DQ4QTG7E.js → chunk-VV4F63BD.js} +11 -11
  71. package/chunks/chunk-XBY7E2FX.js +605 -0
  72. package/chunks/{chunk-JKMBWLFB.js → chunk-YILFYI5W.js} +48 -26
  73. package/chunks/chunk-YOGAOMYB.js +159 -0
  74. package/chunks/{chunk-QWSRH265.js → chunk-Z2Z3GUXZ.js} +777 -776
  75. package/chunks/{chunk-SDHRQFOS.js → chunk-ZTZ4DDQE.js} +2 -2
  76. package/chunks/computer-use-W2TYQNEE.js +825 -0
  77. package/chunks/contextCommand-6FGX3A7J.js +52 -0
  78. package/chunks/{cron-create-3ZBBN7WB.js → cron-create-APL5LU6I.js} +3 -3
  79. package/chunks/{cron-delete-NAGKKIIG.js → cron-delete-4SBJSCN4.js} +3 -3
  80. package/chunks/{cron-list-PAGRXNAI.js → cron-list-2AMGOMVO.js} +3 -3
  81. package/chunks/{de-V4IE2OOZ.js → de-YGKK2BC4.js} +89 -5
  82. package/chunks/{devtools-TWVXEJQB.js → devtools-FM6GJPYG.js} +2 -1
  83. package/chunks/{dist-4L54HRX2.js → dist-4LXD6L6X.js} +24 -5
  84. package/chunks/dist-H6ONXVLG.js +94146 -0
  85. package/chunks/{dist-XKWIWPWQ.js → dist-KAZ3SEBX.js} +1083 -3856
  86. package/chunks/{dist-BXDUQ2QY.js → dist-PK7DFCAW.js} +1 -1
  87. package/chunks/{edit-NVO3FOAK.js → edit-ZCEZC264.js} +30 -22
  88. package/chunks/{en-HGJ2SPLM.js → en-DHGYHIHX.js} +127 -6
  89. package/chunks/{enter-worktree-UEBG4WFC.js → enter-worktree-BBHCFCHG.js} +30 -20
  90. package/chunks/enterPlanMode-3M6KTD3B.js +158 -0
  91. package/chunks/{exit-worktree-UZ3MAQZN.js → exit-worktree-73YPIEQO.js} +27 -19
  92. package/chunks/exitPlanMode-TYZM6BAE.js +703 -0
  93. package/chunks/{fr-CJULI7ZX.js → fr-JXBKPJKQ.js} +89 -5
  94. package/chunks/{geminiContentGenerator-3UZFXGNT.js → geminiContentGenerator-7N2V3VW2.js} +8 -6
  95. package/chunks/{getMachineId-bsd-JXOSIJV2.js → getMachineId-bsd-4CASPIU4.js} +4 -4
  96. package/chunks/{getMachineId-darwin-TE4QRR42.js → getMachineId-darwin-HPQPEMZR.js} +4 -4
  97. package/chunks/{getMachineId-linux-S3OL52XK.js → getMachineId-linux-AUARKYHL.js} +3 -3
  98. package/chunks/{getMachineId-unsupported-DWUSBAPX.js → getMachineId-unsupported-S32ZDA2T.js} +3 -3
  99. package/chunks/{getMachineId-win-AAC5P3AP.js → getMachineId-win-4EFLHYIJ.js} +4 -4
  100. package/chunks/{glob-KNHSFFFG.js → glob-5XBCPQ2A.js} +27 -19
  101. package/chunks/{grep-LACWDZW4.js → grep-VIUU3A7X.js} +30 -19
  102. package/chunks/{ja-L7CHRQEW.js → ja-TGPZSP2B.js} +89 -5
  103. package/chunks/{keychain-token-storage-335UOLJ6.js → keychain-token-storage-6IU6ORQN.js} +3 -3
  104. package/chunks/{ls-AGXQOKSG.js → ls-JRGYIGLY.js} +4 -4
  105. package/chunks/{lsp-UDMUHNPA.js → lsp-SHMKFOAC.js} +3 -3
  106. package/chunks/{monitor-ETKWPJEH.js → monitor-6R4LIJL5.js} +40 -25
  107. package/chunks/{multipart-parser-3QWGTLK3.js → multipart-parser-AJ4WASWR.js} +2 -2
  108. package/chunks/{notebook-edit-QJJLPNYT.js → notebook-edit-5E7ULDVQ.js} +28 -20
  109. package/chunks/{openaiContentGenerator-CNNN424U.js → openaiContentGenerator-ZVHFKM3O.js} +17 -14
  110. package/chunks/{pt-M6JULLEQ.js → pt-TIBG6BIO.js} +89 -5
  111. package/chunks/{qwenContentGenerator-BOLCGK3R.js → qwenContentGenerator-B2VTVSPJ.js} +31 -23
  112. package/chunks/{qwenOAuth2-EEJGROP7.js → qwenOAuth2-2KCKWDCF.js} +6 -4
  113. package/chunks/read-file-GIT7BCDR.js +27 -0
  114. package/chunks/ripGrep-MWKFVYMS.js +48 -0
  115. package/chunks/{ru-QILM4HBC.js → ru-JBCHCK4L.js} +89 -5
  116. package/chunks/scheduler-5VOOYGBH.js +308 -0
  117. package/chunks/send-message-4QNWQJF4.js +244 -0
  118. package/chunks/{serve-OLSI7WSR.js → serve-MN6HZBWN.js} +14262 -7414
  119. package/chunks/shell-NQZQGFM2.js +56 -0
  120. package/chunks/{skill-D6YRHTTI.js → skill-WCFW4644.js} +145 -119
  121. package/chunks/{src-TMOD5X6F.js → src-7XL4G4DC.js} +88 -46
  122. package/chunks/{src-4QH4FZ6I.js → src-IHA6DTUV.js} +452 -62
  123. package/chunks/{syntheticOutput-5PVFDDJ4.js → syntheticOutput-YTYS2ZMQ.js} +4 -4
  124. package/chunks/task-create-MPORPYN6.js +19 -0
  125. package/chunks/task-list-R2YDYPZT.js +151 -0
  126. package/chunks/{task-stop-AJKPSR6R.js → task-stop-SYWJYBCM.js} +3 -3
  127. package/chunks/task-update-E4NSLKMQ.js +408 -0
  128. package/chunks/team-create-7R7KA5IP.js +314 -0
  129. package/chunks/team-delete-25OIWUPN.js +116 -0
  130. package/chunks/{todoWrite-VLAUG4CA.js → todoWrite-4YHMIF4X.js} +16 -5
  131. package/chunks/{tool-search-MZGHUUKD.js → tool-search-YBRVZCLI.js} +29 -11
  132. package/chunks/{tts-notification-K3X7X7MN.js → tts-notification-7SOEMQK4.js} +5 -4
  133. package/chunks/{web-fetch-OILB464A.js → web-fetch-MFIRHIHI.js} +5 -5
  134. package/chunks/workflow-5RIKVCIE.js +960 -0
  135. package/chunks/{write-file-BIQAA57V.js → write-file-DMQTJZOM.js} +32 -24
  136. package/chunks/{zh-PWL2NKY3.js → zh-7H5OQC4I.js} +135 -11
  137. package/chunks/{zh-TW-S3YGWICZ.js → zh-TW-P4IDHD3M.js} +128 -11
  138. package/cli.js +45402 -20570
  139. package/examples/agent/agents/diary.md +86 -0
  140. package/examples/agent/qwen-extension.json +5 -0
  141. package/examples/commands/commands/fs/grep-code.md +3 -0
  142. package/examples/commands/qwen-extension.json +5 -0
  143. package/examples/context/QWEN.md +8 -0
  144. package/examples/context/qwen-extension.json +5 -0
  145. package/examples/mcp-server/example.ts +60 -0
  146. package/examples/mcp-server/package.json +18 -0
  147. package/examples/mcp-server/qwen-extension.json +12 -0
  148. package/examples/mcp-server/tsconfig.json +13 -0
  149. package/examples/skills/qwen-extension.json +5 -0
  150. package/examples/skills/skills/synonyms/SKILL.md +48 -0
  151. package/examples/starter/QWEN.md +30 -0
  152. package/examples/starter/README.md +59 -0
  153. package/examples/starter/agents/diary.md +86 -0
  154. package/examples/starter/commands/writing/polish.md +13 -0
  155. package/examples/starter/example.ts +64 -0
  156. package/examples/starter/package.json +18 -0
  157. package/examples/starter/qwen-extension.json +12 -0
  158. package/examples/starter/skills/synonyms/SKILL.md +48 -0
  159. package/examples/starter/tsconfig.json +13 -0
  160. package/fzfWorker.js +1083 -0
  161. package/locales/ca.js +118 -5
  162. package/locales/de.js +117 -5
  163. package/locales/en.js +169 -7
  164. package/locales/fr.js +119 -5
  165. package/locales/ja.js +114 -5
  166. package/locales/pt.js +117 -5
  167. package/locales/ru.js +116 -5
  168. package/locales/zh-TW.js +161 -12
  169. package/locales/zh.js +169 -12
  170. package/package.json +4 -2
  171. package/scripts/postinstall.cjs +2 -1
  172. package/bundled/qc-helper/docs/features/checkpointing.md +0 -77
  173. package/chunks/agent-7ZN3CRHR.js +0 -48
  174. package/chunks/chunk-6PCB2DEF.js +0 -434
  175. package/chunks/chunk-EM6ETG2K.js +0 -60
  176. package/chunks/chunk-G7YTSRES.js +0 -150
  177. package/chunks/contextCommand-7IBASARL.js +0 -44
  178. package/chunks/exitPlanMode-PZAMWIRW.js +0 -227
  179. package/chunks/multipart-parser-IXGBIOIN.js +0 -384
  180. package/chunks/read-file-CCUEUFG2.js +0 -24
  181. package/chunks/ripGrep-TADOH2HK.js +0 -40
  182. package/chunks/send-message-YL44UZFC.js +0 -151
  183. package/chunks/shell-7KKKC5G7.js +0 -48
  184. package/chunks/src-IPWIHNMI.js +0 -1406
  185. package/chunks/undici-F6ZOXSS5.js +0 -8
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: diary-writer
3
+ description: generate a diary for user
4
+ color: yellow
5
+ tools:
6
+ - Glob
7
+ - Grep
8
+ - ListFiles
9
+ - ReadFile
10
+ - ReadManyFiles
11
+ - NotebookRead
12
+ - WebFetch
13
+ - TodoWrite
14
+ modelConfig:
15
+ model: qwen3-coder-plus
16
+ ---
17
+
18
+ You are a personal diary writing assistant who helps users capture their daily experiences, thoughts, and reflections in meaningful journal entries.
19
+
20
+ ## Core Mission
21
+
22
+ Help users create thoughtful, well-structured diary entries that preserve their memories, emotions, and personal growth moments.
23
+
24
+ ## Writing Style
25
+
26
+ **Tone & Voice**
27
+
28
+ - Warm, personal, and authentic
29
+ - Reflective and introspective
30
+ - Supportive without being overly sentimental
31
+ - Adapt to user's preferred style (casual, formal, poetic, etc.)
32
+
33
+ **Structure Options**
34
+
35
+ - Free-form narrative
36
+ - Bullet-point highlights
37
+ - Gratitude-focused entries
38
+ - Goal and achievement tracking
39
+ - Emotional processing format
40
+
41
+ ## Capabilities
42
+
43
+ **1. Daily Entry Creation**
44
+
45
+ - Transform user's brief notes into full diary entries
46
+ - Expand on key moments with descriptive details
47
+ - Add context about weather, mood, or setting when relevant
48
+ - Include meaningful quotes or observations
49
+
50
+ **2. Reflection Prompts**
51
+
52
+ - Ask thoughtful questions to deepen entries
53
+ - Suggest areas worth exploring further
54
+ - Help identify patterns in thoughts and behaviors
55
+ - Encourage gratitude and positive reflection
56
+
57
+ **3. Memory Enhancement**
58
+
59
+ - Help recall specific details from the day
60
+ - Connect current events to past experiences
61
+ - Highlight personal growth and progress
62
+ - Preserve important conversations or interactions
63
+
64
+ **4. Organization**
65
+
66
+ - Suggest tags or themes for entries
67
+ - Create summaries for weekly/monthly reviews
68
+ - Track recurring topics or goals
69
+ - Maintain consistency in formatting
70
+
71
+ ## Guidelines
72
+
73
+ - **Privacy First**: Treat all content as deeply personal and confidential
74
+ - **User's Voice**: Write in a way that sounds like the user, not generic
75
+ - **No Judgment**: Accept all emotions and experiences without criticism
76
+ - **Encourage Honesty**: Create a safe space for authentic expression
77
+ - **Balance**: Mix facts with feelings, events with reflections
78
+
79
+ ## Output Format
80
+
81
+ When creating a diary entry, include:
82
+
83
+ 1. **Date & Title** (optional creative title)
84
+ 2. **Main Content** - The narrative or bullet points
85
+ 3. **Reflection** - A brief closing thought or takeaway
86
+ 4. **Tags** (optional) - For organization and future reference
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "agent-example",
3
+ "description": "Example extension that provides a custom subagent",
4
+ "version": "1.0.0"
5
+ }
@@ -0,0 +1,3 @@
1
+ Please summarize the findings for the pattern `{{args}}`.
2
+
3
+ Search Results:
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "commands-example",
3
+ "description": "Example extension that provides custom slash commands",
4
+ "version": "1.0.0"
5
+ }
@@ -0,0 +1,8 @@
1
+ # Ink Library Screen Reader Guidance
2
+
3
+ When building custom components, it's important to keep accessibility in mind. While Ink provides the building blocks, ensuring your components are accessible will make your CLIs usable by a wider audience.
4
+
5
+ ## General Principles
6
+
7
+ Provide screen reader-friendly output: Use the useIsScreenReaderEnabled hook to detect if a screen reader is active. You can then render a more descriptive output for screen reader users.
8
+ Leverage ARIA props: For components that have a specific role (e.g., a checkbox or a button), use the aria-role, aria-state, and aria-label props on <Box> and <Text> to provide semantic meaning to screen readers.
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "context-example",
3
+ "description": "Example extension that provides additional context via QWEN.md",
4
+ "version": "1.0.0"
5
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
+ import { z } from 'zod';
10
+
11
+ const server = new McpServer({
12
+ name: 'prompt-server',
13
+ version: '1.0.0',
14
+ });
15
+
16
+ server.registerTool(
17
+ 'fetch_posts',
18
+ {
19
+ description: 'Fetches a list of posts from a public API.',
20
+ inputSchema: z.object({}).shape,
21
+ },
22
+ async () => {
23
+ const apiResponse = await fetch(
24
+ 'https://jsonplaceholder.typicode.com/posts',
25
+ );
26
+ const posts = await apiResponse.json();
27
+ const response = { posts: posts.slice(0, 5) };
28
+ return {
29
+ content: [
30
+ {
31
+ type: 'text',
32
+ text: JSON.stringify(response),
33
+ },
34
+ ],
35
+ };
36
+ },
37
+ );
38
+
39
+ server.registerPrompt(
40
+ 'poem-writer',
41
+ {
42
+ title: 'Poem Writer',
43
+ description: 'Write a nice haiku',
44
+ argsSchema: { title: z.string(), mood: z.string().optional() },
45
+ },
46
+ ({ title, mood }) => ({
47
+ messages: [
48
+ {
49
+ role: 'user',
50
+ content: {
51
+ type: 'text',
52
+ text: `Write a haiku${mood ? ` with the mood ${mood}` : ''} called ${title}. Note that a haiku is 5 syllables followed by 7 syllables followed by 5 syllables `,
53
+ },
54
+ },
55
+ ],
56
+ }),
57
+ );
58
+
59
+ const transport = new StdioServerTransport();
60
+ await server.connect(transport);
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "mcp-server-example",
3
+ "version": "1.0.0",
4
+ "description": "Example MCP Server for Qwen Code Extension",
5
+ "type": "module",
6
+ "main": "example.js",
7
+ "scripts": {
8
+ "build": "tsc"
9
+ },
10
+ "devDependencies": {
11
+ "typescript": "~5.4.5",
12
+ "@types/node": "^20.11.25"
13
+ },
14
+ "dependencies": {
15
+ "@modelcontextprotocol/sdk": "^1.11.0",
16
+ "zod": "^3.22.4"
17
+ }
18
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "mcp-server-example",
3
+ "description": "Example extension that provides an MCP server",
4
+ "version": "1.0.0",
5
+ "mcpServers": {
6
+ "nodeServer": {
7
+ "command": "node",
8
+ "args": ["${extensionPath}${/}dist${/}example.js"],
9
+ "cwd": "${extensionPath}"
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "strict": true,
7
+ "esModuleInterop": true,
8
+ "skipLibCheck": true,
9
+ "forceConsistentCasingInFileNames": true,
10
+ "outDir": "./dist"
11
+ },
12
+ "include": ["example.ts"]
13
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "skills-example",
3
+ "description": "Example extension that provides custom skills",
4
+ "version": "1.0.0"
5
+ }
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: synonyms
3
+ description: Generate synonyms for words or phrases. Use this skill when the user needs alternative words with similar meanings, wants to expand vocabulary, or seeks varied expressions for writing.
4
+ license: Complete terms in LICENSE.txt
5
+ ---
6
+
7
+ This skill helps generate synonyms and alternative expressions for given words or phrases. It provides contextually appropriate alternatives to enhance vocabulary and improve writing variety.
8
+
9
+ The user provides a word, phrase, or sentence where they need synonym suggestions. They may specify the context, tone, or formality level desired.
10
+
11
+ ## Synonym Generation Guidelines
12
+
13
+ When generating synonyms, consider:
14
+
15
+ - **Context**: The specific domain or situation where the word will be used
16
+ - **Tone**: Formal, informal, neutral, academic, conversational, etc.
17
+ - **Nuance**: Subtle differences in meaning between similar words
18
+ - **Register**: Appropriate level of formality for the intended audience
19
+
20
+ ## Output Format
21
+
22
+ For each input word or phrase, provide:
23
+
24
+ 1. **Direct Synonyms**: Words with nearly identical meanings
25
+ 2. **Related Alternatives**: Words with similar but slightly different connotations
26
+ 3. **Context Examples**: Brief usage examples when helpful
27
+
28
+ ## Best Practices
29
+
30
+ - Prioritize commonly used synonyms over obscure alternatives
31
+ - Note any subtle differences in meaning or usage
32
+ - Consider regional variations when relevant
33
+ - Indicate formality levels (formal/informal/neutral)
34
+ - Provide multiple options to give users choices
35
+
36
+ ## Example
37
+
38
+ **Input**: "happy"
39
+
40
+ **Synonyms**:
41
+
42
+ - **Direct**: joyful, cheerful, delighted, pleased, content
43
+ - **Informal**: thrilled, stoked, over the moon
44
+ - **Formal**: elated, gratified, blissful
45
+ - **Subtle variations**:
46
+ - _content_ - peaceful satisfaction
47
+ - _ecstatic_ - intense, overwhelming happiness
48
+ - _cheerful_ - outwardly expressing happiness
@@ -0,0 +1,30 @@
1
+ # Writing Companion
2
+
3
+ This extension turns Qwen Code into a thoughtful writing companion. Keep the
4
+ following guidance in mind whenever this extension is active.
5
+
6
+ ## Voice
7
+
8
+ - Be warm, clear, and concise. Prefer plain language over jargon.
9
+ - Preserve the user's own voice and intent — improve their words, don't replace
10
+ them with your own style.
11
+ - Offer choices rather than dictating a single "correct" rewrite.
12
+
13
+ ## Available capabilities
14
+
15
+ - **`/writing:polish <text>`** — proofread and tighten a passage while keeping
16
+ its meaning and tone.
17
+ - **The `synonyms` skill** — suggest alternative words and phrasings with notes
18
+ on nuance and formality.
19
+ - **The `diary-writer` subagent** — expand brief notes into a full journal
20
+ entry. Reach for it when the user wants reflective, longer-form writing.
21
+ - **The `count_words` MCP tool** — count the words and characters in a passage
22
+ when the user asks about length or wants to hit a target.
23
+
24
+ ## Guidelines
25
+
26
+ - When asked to "make it shorter", cut filler and redundancy first; flag any
27
+ meaning you would lose.
28
+ - When suggesting synonyms or rewrites, briefly explain _why_ one option fits
29
+ better than another.
30
+ - Treat the user's drafts as private and confidential.
@@ -0,0 +1,59 @@
1
+ # Starter Extension Example
2
+
3
+ A complete, end-to-end Qwen Code extension that demonstrates **every** building
4
+ block in a single package, themed around a small "writing companion". Use it as
5
+ a starting point when you want a relatively complete scaffold instead of an
6
+ empty extension.
7
+
8
+ ```
9
+ starter/
10
+ ├── qwen-extension.json # Manifest: name, version, context file, MCP servers
11
+ ├── QWEN.md # Context: persistent instructions for the model
12
+ ├── agents/
13
+ │ └── diary.md # Subagent: a focused diary-writing assistant
14
+ ├── commands/
15
+ │ └── writing/
16
+ │ └── polish.md # Custom command: /writing:polish
17
+ ├── skills/
18
+ │ └── synonyms/
19
+ │ └── SKILL.md # Skill: generate synonyms on demand
20
+ ├── example.ts # MCP server source (tools + prompts)
21
+ ├── package.json # Build config for the MCP server
22
+ └── tsconfig.json
23
+ ```
24
+
25
+ ## What each piece does
26
+
27
+ | Capability | Where | How it shows up |
28
+ | ---------- | ------------------- | -------------------------------------------------------- |
29
+ | Context | `QWEN.md` | Persistent instructions injected into every session. |
30
+ | Subagent | `agents/diary.md` | Available via `/agents manage`. |
31
+ | Command | `commands/writing/` | Invoked as `/writing:polish <text>`. |
32
+ | Skill | `skills/synonyms/` | Auto-activated via `/skills` when relevant. |
33
+ | MCP server | `example.ts` | Exposes a `count_words` tool and a `poem-writer` prompt. |
34
+
35
+ ## Building the MCP server
36
+
37
+ The MCP server is written in TypeScript and must be compiled before it can run.
38
+ From the extension directory:
39
+
40
+ ```bash
41
+ npm install
42
+ npm run build # emits dist/example.js, which qwen-extension.json points at
43
+ ```
44
+
45
+ The other capabilities (context, agents, commands, skills) work without any
46
+ build step.
47
+
48
+ ## Trying it out
49
+
50
+ ```bash
51
+ qwen extensions link /path/to/starter # link this directory for local testing
52
+ ```
53
+
54
+ Then restart Qwen Code. The context loads automatically, `/writing:polish` and
55
+ `/skills` become available, the `diary-writer` subagent appears under
56
+ `/agents manage`, and (once built) the MCP `count_words` tool is callable.
57
+
58
+ See the [Getting Started with Extensions](https://github.com/QwenLM/qwen-code/blob/main/docs/users/extension/getting-started-extensions.md)
59
+ guide for a deeper walkthrough.
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: diary-writer
3
+ description: generate a diary for user
4
+ color: yellow
5
+ tools:
6
+ - Glob
7
+ - Grep
8
+ - ListFiles
9
+ - ReadFile
10
+ - ReadManyFiles
11
+ - NotebookRead
12
+ - WebFetch
13
+ - TodoWrite
14
+ modelConfig:
15
+ model: qwen3-coder-plus
16
+ ---
17
+
18
+ You are a personal diary writing assistant who helps users capture their daily experiences, thoughts, and reflections in meaningful journal entries.
19
+
20
+ ## Core Mission
21
+
22
+ Help users create thoughtful, well-structured diary entries that preserve their memories, emotions, and personal growth moments.
23
+
24
+ ## Writing Style
25
+
26
+ **Tone & Voice**
27
+
28
+ - Warm, personal, and authentic
29
+ - Reflective and introspective
30
+ - Supportive without being overly sentimental
31
+ - Adapt to user's preferred style (casual, formal, poetic, etc.)
32
+
33
+ **Structure Options**
34
+
35
+ - Free-form narrative
36
+ - Bullet-point highlights
37
+ - Gratitude-focused entries
38
+ - Goal and achievement tracking
39
+ - Emotional processing format
40
+
41
+ ## Capabilities
42
+
43
+ **1. Daily Entry Creation**
44
+
45
+ - Transform user's brief notes into full diary entries
46
+ - Expand on key moments with descriptive details
47
+ - Add context about weather, mood, or setting when relevant
48
+ - Include meaningful quotes or observations
49
+
50
+ **2. Reflection Prompts**
51
+
52
+ - Ask thoughtful questions to deepen entries
53
+ - Suggest areas worth exploring further
54
+ - Help identify patterns in thoughts and behaviors
55
+ - Encourage gratitude and positive reflection
56
+
57
+ **3. Memory Enhancement**
58
+
59
+ - Help recall specific details from the day
60
+ - Connect current events to past experiences
61
+ - Highlight personal growth and progress
62
+ - Preserve important conversations or interactions
63
+
64
+ **4. Organization**
65
+
66
+ - Suggest tags or themes for entries
67
+ - Create summaries for weekly/monthly reviews
68
+ - Track recurring topics or goals
69
+ - Maintain consistency in formatting
70
+
71
+ ## Guidelines
72
+
73
+ - **Privacy First**: Treat all content as deeply personal and confidential
74
+ - **User's Voice**: Write in a way that sounds like the user, not generic
75
+ - **No Judgment**: Accept all emotions and experiences without criticism
76
+ - **Encourage Honesty**: Create a safe space for authentic expression
77
+ - **Balance**: Mix facts with feelings, events with reflections
78
+
79
+ ## Output Format
80
+
81
+ When creating a diary entry, include:
82
+
83
+ 1. **Date & Title** (optional creative title)
84
+ 2. **Main Content** - The narrative or bullet points
85
+ 3. **Reflection** - A brief closing thought or takeaway
86
+ 4. **Tags** (optional) - For organization and future reference
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: Proofread and tighten a passage while keeping its meaning and tone.
3
+ argument-hint: <text to polish>
4
+ ---
5
+
6
+ Polish the following passage. Fix grammar, spelling, and awkward phrasing, and
7
+ tighten any wordiness — but preserve the author's meaning, voice, and tone.
8
+
9
+ Then give a short bullet list of the most important changes you made and why.
10
+
11
+ Passage:
12
+
13
+ {{args}}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
+ import { z } from 'zod';
10
+
11
+ const server = new McpServer({
12
+ name: 'writing-companion-server',
13
+ version: '1.0.0',
14
+ });
15
+
16
+ // A self-contained tool (no network access needed) that counts the words and
17
+ // characters in a passage. Useful for hitting a length target.
18
+ server.registerTool(
19
+ 'count_words',
20
+ {
21
+ description: 'Count the words and characters in a passage of text.',
22
+ inputSchema: z.object({
23
+ text: z.string().describe('The text to measure.'),
24
+ }).shape,
25
+ },
26
+ async ({ text }) => {
27
+ const words = text.trim() === '' ? 0 : text.trim().split(/\s+/).length;
28
+ const characters = text.length;
29
+ const charactersNoSpaces = text.replace(/\s/g, '').length;
30
+ const response = { words, characters, charactersNoSpaces };
31
+ return {
32
+ content: [
33
+ {
34
+ type: 'text',
35
+ text: JSON.stringify(response),
36
+ },
37
+ ],
38
+ };
39
+ },
40
+ );
41
+
42
+ // A reusable prompt template surfaced to the user via the MCP server.
43
+ server.registerPrompt(
44
+ 'poem-writer',
45
+ {
46
+ title: 'Poem Writer',
47
+ description: 'Write a nice haiku',
48
+ argsSchema: { title: z.string(), mood: z.string().optional() },
49
+ },
50
+ ({ title, mood }) => ({
51
+ messages: [
52
+ {
53
+ role: 'user',
54
+ content: {
55
+ type: 'text',
56
+ text: `Write a haiku${mood ? ` with the mood ${mood}` : ''} called ${title}. Note that a haiku is 5 syllables followed by 7 syllables followed by 5 syllables `,
57
+ },
58
+ },
59
+ ],
60
+ }),
61
+ );
62
+
63
+ const transport = new StdioServerTransport();
64
+ await server.connect(transport);
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "starter-example",
3
+ "version": "1.0.0",
4
+ "description": "Complete example Qwen Code extension (context, agent, command, skill, and MCP server)",
5
+ "type": "module",
6
+ "main": "example.js",
7
+ "scripts": {
8
+ "build": "tsc"
9
+ },
10
+ "devDependencies": {
11
+ "typescript": "~5.4.5",
12
+ "@types/node": "^20.11.25"
13
+ },
14
+ "dependencies": {
15
+ "@modelcontextprotocol/sdk": "^1.11.0",
16
+ "zod": "^3.22.4"
17
+ }
18
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "starter-example",
3
+ "version": "1.0.0",
4
+ "contextFileName": "QWEN.md",
5
+ "mcpServers": {
6
+ "nodeServer": {
7
+ "command": "node",
8
+ "args": ["${extensionPath}${/}dist${/}example.js"],
9
+ "cwd": "${extensionPath}"
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: synonyms
3
+ description: Generate synonyms for words or phrases. Use this skill when the user needs alternative words with similar meanings, wants to expand vocabulary, or seeks varied expressions for writing.
4
+ license: Complete terms in LICENSE.txt
5
+ ---
6
+
7
+ This skill helps generate synonyms and alternative expressions for given words or phrases. It provides contextually appropriate alternatives to enhance vocabulary and improve writing variety.
8
+
9
+ The user provides a word, phrase, or sentence where they need synonym suggestions. They may specify the context, tone, or formality level desired.
10
+
11
+ ## Synonym Generation Guidelines
12
+
13
+ When generating synonyms, consider:
14
+
15
+ - **Context**: The specific domain or situation where the word will be used
16
+ - **Tone**: Formal, informal, neutral, academic, conversational, etc.
17
+ - **Nuance**: Subtle differences in meaning between similar words
18
+ - **Register**: Appropriate level of formality for the intended audience
19
+
20
+ ## Output Format
21
+
22
+ For each input word or phrase, provide:
23
+
24
+ 1. **Direct Synonyms**: Words with nearly identical meanings
25
+ 2. **Related Alternatives**: Words with similar but slightly different connotations
26
+ 3. **Context Examples**: Brief usage examples when helpful
27
+
28
+ ## Best Practices
29
+
30
+ - Prioritize commonly used synonyms over obscure alternatives
31
+ - Note any subtle differences in meaning or usage
32
+ - Consider regional variations when relevant
33
+ - Indicate formality levels (formal/informal/neutral)
34
+ - Provide multiple options to give users choices
35
+
36
+ ## Example
37
+
38
+ **Input**: "happy"
39
+
40
+ **Synonyms**:
41
+
42
+ - **Direct**: joyful, cheerful, delighted, pleased, content
43
+ - **Informal**: thrilled, stoked, over the moon
44
+ - **Formal**: elated, gratified, blissful
45
+ - **Subtle variations**:
46
+ - _content_ - peaceful satisfaction
47
+ - _ecstatic_ - intense, overwhelming happiness
48
+ - _cheerful_ - outwardly expressing happiness
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "strict": true,
7
+ "esModuleInterop": true,
8
+ "skipLibCheck": true,
9
+ "forceConsistentCasingInFileNames": true,
10
+ "outDir": "./dist"
11
+ },
12
+ "include": ["example.ts"]
13
+ }