feat: codebuddy-mem v13.0.0 - 基于 claude-mem 12.6.0 AGPL-3.0 分叉
- 全局重命名 claude-mem → codebuddy-mem - AI 后端改为 DeepSeek V4 直连 - 适配 CodeBuddy Code 作为 MCP 客户端 - 修复 GS 函数 timeoutMs bug - 新增 README / CHANGELOG / UPSTREAM / install.sh - 协议:AGPL-3.0
20
.codebuddy-plugin/plugin.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "codebuddy-mem",
|
||||
"version": "13.0.0",
|
||||
"description": "跨会话持久记忆系统 — 基于 claude-mem AGPL-3.0 分叉,适配 DeepSeek V4 / CodeBuddy Code",
|
||||
"author": {
|
||||
"name": "筑基阁 / 开阳星"
|
||||
},
|
||||
"repository": "https://git.yxcowork.vip/qiukai/codebuddy-mem",
|
||||
"license": "AGPL-3.0",
|
||||
"upstream": "https://github.com/thedotmack/claude-mem",
|
||||
"keywords": [
|
||||
"memory",
|
||||
"context",
|
||||
"persistence",
|
||||
"hooks",
|
||||
"mcp",
|
||||
"codebuddy",
|
||||
"deepseek"
|
||||
]
|
||||
}
|
||||
8
.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
node_modules/
|
||||
bun.lock
|
||||
*.backup*
|
||||
.orphaned_at
|
||||
.install-version
|
||||
.codebuddy-mem/
|
||||
.DS_Store
|
||||
*.log
|
||||
20
CHANGELOG.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Changelog
|
||||
|
||||
## 13.0.0 (2026-05-05)
|
||||
|
||||
### 分叉起点
|
||||
|
||||
基于 [claude-mem v12.6.0](https://github.com/thedotmack/claude-mem) 创建分叉,命名为 codebuddy-mem。
|
||||
|
||||
### 变更
|
||||
|
||||
- **全局重命名**:claude-mem → codebuddy-mem
|
||||
- **AI 后端切换**:corpus 查询从 Claude API 改为 DeepSeek V4 直连
|
||||
- **MCP 超时修复**:GS 函数 timeoutMs bug 修复,超时从 3s 调整为 60s
|
||||
- **部署适配**:支持 CodeBuddy Code 作为 MCP 客户端
|
||||
- **仓库迁移**:从 GitHub 迁移至 git.yxcowork.vip/qiukai/codebuddy-mem
|
||||
- **协议**:继承 AGPL-3.0
|
||||
|
||||
### 已知问题
|
||||
|
||||
- tree-sitter-cli 二进制需通过 Homebrew 安装(npm 下载可能失败)
|
||||
619
LICENSE
Normal file
@@ -0,0 +1,619 @@
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
our General Public Licenses are intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing under
|
||||
this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your version
|
||||
supports such interaction) an opportunity to receive the Corresponding
|
||||
Source of your version by providing access to the Corresponding Source
|
||||
from a network server at no charge, through some standard or customary
|
||||
means of facilitating copying of software. This Corresponding Source
|
||||
shall include the Corresponding Source for any work covered by version 3
|
||||
of the GNU General Public License that is incorporated pursuant to the
|
||||
following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU Affero General Public License from time to time. Such new versions
|
||||
will be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU Affero General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU Affero General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU Affero General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
69
README.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# codebuddy-mem
|
||||
|
||||
跨会话持久记忆系统 — 基于 [claude-mem](https://github.com/thedotmack/claude-mem) AGPL-3.0 分叉,适配 DeepSeek V4 / CodeBuddy Code。
|
||||
|
||||
## 与 claude-mem 的区别
|
||||
|
||||
| 项目 | claude-mem | codebuddy-mem |
|
||||
|------|-----------|---------------|
|
||||
| AI 后端 | Claude API | DeepSeek V4(直连) |
|
||||
| MCP 客户端 | Claude Code | CodeBuddy Code |
|
||||
| 仓库 | github.com/thedotmack | git.yxcowork.vip/qiukai |
|
||||
| 维护 | @thedotmack | 筑基阁 / 开阳星 |
|
||||
|
||||
## 功能
|
||||
|
||||
- **跨会话记忆**:自动记录所有操作,下次会话自动恢复上下文
|
||||
- **语义搜索**:搜索历史会话中的工具调用、观察记录、输出
|
||||
- **语料库**:构建知识语料库,通过 AI 问答检索
|
||||
- **代码结构**:smart_outline / smart_unfold 快速浏览代码
|
||||
|
||||
## 安装
|
||||
|
||||
### 方式一:独立 MCP 服务
|
||||
|
||||
```bash
|
||||
# 克隆仓库
|
||||
git clone https://git.yxcowork.vip/qiukai/codebuddy-mem.git ~/.codebuddy-mem
|
||||
|
||||
# 安装依赖
|
||||
cd ~/.codebuddy-mem && bun install
|
||||
|
||||
# 配置 MCP(~/.codebuddy/.mcp.json)
|
||||
{
|
||||
"mcpServers": {
|
||||
"codebuddy-mem": {
|
||||
"type": "stdio",
|
||||
"command": "bun",
|
||||
"args": ["~/.codebuddy-mem/scripts/mcp-server.cjs"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 方式二:CodeBuddy 插件
|
||||
|
||||
```bash
|
||||
bash install.sh
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
配置文件:`~/.codebuddy-mem/settings.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"CODEBUDDY_MEM_PROVIDER": "deepseek",
|
||||
"CODEBUDDY_MEM_DEEPSEEK_API_KEY": "sk-xxx",
|
||||
"CODEBUDDY_MEM_MODEL": "deepseek-chat",
|
||||
"CODEBUDDY_MEM_WORKER_PORT": "37701"
|
||||
}
|
||||
```
|
||||
|
||||
## 协议
|
||||
|
||||
AGPL-3.0 — 继承自 claude-mem,源码必须保持开放。
|
||||
|
||||
## 上游
|
||||
|
||||
本仓库基于 [claude-mem v12.6.0](https://github.com/thedotmack/claude-mem) 分叉。详见 [UPSTREAM.md](./UPSTREAM.md)。
|
||||
31
UPSTREAM.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# 上游来源
|
||||
|
||||
## 原始项目
|
||||
|
||||
- **名称**:claude-mem
|
||||
- **作者**:Alex Newman (@thedotmack)
|
||||
- **仓库**:https://github.com/thedotmack/claude-mem
|
||||
- **协议**:GNU Affero General Public License v3.0 (AGPL-3.0)
|
||||
|
||||
## 分叉信息
|
||||
|
||||
- **分叉版本**:基于 claude-mem v12.6.0
|
||||
- **分叉日期**:2026-05-05
|
||||
- **分叉原因**:
|
||||
1. 将 AI 后端从 Claude API 替换为 DeepSeek V4
|
||||
2. 适配 CodeBuddy Code 作为 MCP 客户端
|
||||
3. 建立自有 Git 仓库,独立维护升级
|
||||
|
||||
## 更新策略
|
||||
|
||||
每次 claude-mem 上游发布新版本时:
|
||||
1. 查看上游 CHANGELOG
|
||||
2. 手动合并重要改动到 codebuddy-mem
|
||||
3. 重新应用 DeepSeek 相关补丁(如 executeQuery 替换)
|
||||
4. 更新版本号并发布
|
||||
|
||||
## 协议合规
|
||||
|
||||
- codebuddy-mem 继承原始 AGPL-3.0 协议
|
||||
- 原始版权声明保留
|
||||
- 分叉来源在 README.md 和本文件中明确标注
|
||||
92
hooks/bugfixes-2026-01-10.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Bugfix Sprint: 2026-01-10
|
||||
|
||||
## Critical Priority (Blocks Users)
|
||||
|
||||
### #646 - Plugin bricks Claude Code - stdin fstat EINVAL crash
|
||||
- **Impact**: Plugin completely bricks Claude Code on Linux. Users cannot recover without manual config editing.
|
||||
- **Root Cause**: Bun's stdin handling causes fstat EINVAL when reading piped input
|
||||
- **Related Discussion**: Check if this is a Bun upstream issue
|
||||
- [ ] Investigate stdin handling in hook scripts
|
||||
- [ ] Test on Linux with stdin piping
|
||||
- [ ] Implement fix
|
||||
|
||||
### #623 - Crash-recovery loop when memory_session_id not captured
|
||||
- **Impact**: Infinite loop consuming API tokens, growing queue unbounded
|
||||
- **Root Cause**: memory_session_id not captured, causes repeated crash-recovery
|
||||
- [ ] Add null/undefined check for memory_session_id
|
||||
- [ ] Add circuit breaker for crash-recovery attempts
|
||||
|
||||
## High Priority
|
||||
|
||||
### #638 - Worker startup missing JSON output causes hooks to appear stuck
|
||||
- **Impact**: UI appears stuck during worker startup
|
||||
- [ ] Ensure worker startup emits proper JSON status
|
||||
- [ ] Add progress feedback to hook output
|
||||
|
||||
### #641/#609 - CLAUDE.md files in subdirectories
|
||||
- **Impact**: CLAUDE.md files scattered throughout project directories
|
||||
- **Note**: This is a documented feature request that was never implemented (setting exists but doesn't work)
|
||||
- [ ] Implement the `disableSubdirectoryCLAUDEmd` setting properly
|
||||
- [ ] Or change default behavior to not create subdirectory files
|
||||
|
||||
### #635 - JSON parsing error prevents folder context generation
|
||||
- **Impact**: Folder context not generating, breaks context injection
|
||||
- **Root Cause**: String spread instead of array spread
|
||||
- [ ] Fix the JSON parsing logic
|
||||
- [ ] Add proper error handling
|
||||
|
||||
## Medium Priority
|
||||
|
||||
### #582 - Tilde paths create literal ~ directories
|
||||
- **Impact**: Directories named "~" created instead of expanding to home
|
||||
- [ ] Use path expansion for tilde in all path operations
|
||||
- [ ] Audit all path handling code
|
||||
|
||||
### #642/#643 - ChromaDB search fails due to initialization timing
|
||||
- **Impact**: Search fails with JSON parse error
|
||||
- **Note**: #643 is a duplicate of #642
|
||||
- [ ] Fix initialization timing issue
|
||||
- [ ] Add proper async/await handling
|
||||
|
||||
### #626 - HealthMonitor hardcodes ~/.claude path
|
||||
- **Impact**: Fails for users with custom config directories
|
||||
- [ ] Use configurable path instead of hardcoded ~/.claude
|
||||
- [ ] Respect CLAUDE_CONFIG_DIR or similar env var
|
||||
|
||||
### #598 - Too many messages pollute conversation history
|
||||
- **Impact**: Hook messages clutter conversation
|
||||
- [ ] Reduce verbosity of hook messages
|
||||
- [ ] Make message frequency configurable
|
||||
|
||||
## Low Priority (Code Quality)
|
||||
|
||||
### #648 - Empty catch blocks swallow JSON parse errors
|
||||
- [ ] Add proper error logging to catch blocks in SessionSearch.ts
|
||||
|
||||
### #649 - Inconsistent logging in CursorHooksInstaller
|
||||
- [ ] Replace console.log with structured logger
|
||||
- **Note**: 177 console.log calls across 20 files identified
|
||||
|
||||
## Won't Fix / Not a Bug
|
||||
|
||||
### #632 - Feature request for disabling CLAUDE.md in subdirectories
|
||||
- **Note**: Covered by #641 implementation
|
||||
|
||||
### #633 - Help request about Cursor integration
|
||||
- **Note**: Documentation/support issue, not a bug
|
||||
|
||||
### #640 - Arabic README translation
|
||||
- **Note**: Documentation PR, not a bugfix
|
||||
|
||||
### #624 - Beta testing strategy proposal
|
||||
- **Note**: Enhancement proposal, not a bugfix
|
||||
|
||||
## Already Fixed in v9.0.2
|
||||
|
||||
- Windows Terminal tab accumulation (#625/#628)
|
||||
- Windows 11 compatibility - WMIC to PowerShell migration
|
||||
- Claude Code 2.1.1 compatibility + path validation (#614)
|
||||
|
||||
---
|
||||
|
||||
**Recommended Approach**: Fix #646 first (critical blocker), then #623 (crash loop), then work through high priority issues in order of impact.
|
||||
87
hooks/hooks.json
Normal file
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"description": "codebuddy-mem 记忆系统钩子 — 基于 claude-mem AGPL-3.0 分叉",
|
||||
"hooks": {
|
||||
"Setup": [
|
||||
{
|
||||
"matcher": "*",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"shell": "bash",
|
||||
"command": "export PATH=\"$HOME/.nvm/versions/node/v$(ls \"$HOME/.nvm/versions/node\" 2>/dev/null | sed 's/^v//' | sort -t. -k1,1n -k2,2n -k3,3n | tail -1)/bin:$HOME/.local/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"; _R=\"${CODEBUDDY_PLUGIN_ROOT:-$HOME/.codebuddy-mem}\"; _R=\"${_R%/}\"; node \"$_R/scripts/version-check.js\"",
|
||||
"timeout": 300
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SessionStart": [
|
||||
{
|
||||
"matcher": "startup|clear|compact",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"shell": "bash",
|
||||
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CODEBUDDY_PLUGIN_ROOT:-$HOME/.codebuddy-mem}\"; _R=\"${_R%/}\"; node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" start; echo '{\"continue\":true,\"suppressOutput\":true}'",
|
||||
"timeout": 60
|
||||
},
|
||||
{
|
||||
"type": "command",
|
||||
"shell": "bash",
|
||||
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CODEBUDDY_PLUGIN_ROOT:-$HOME/.codebuddy-mem}\"; _R=\"${_R%/}\"; node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" hook codebuddy context",
|
||||
"timeout": 60
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"UserPromptSubmit": [
|
||||
{
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"shell": "bash",
|
||||
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CODEBUDDY_PLUGIN_ROOT:-$HOME/.codebuddy-mem}\"; _R=\"${_R%/}\"; node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" hook codebuddy session-init",
|
||||
"timeout": 60
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PostToolUse": [
|
||||
{
|
||||
"matcher": "*",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"shell": "bash",
|
||||
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CODEBUDDY_PLUGIN_ROOT:-$HOME/.codebuddy-mem}\"; _R=\"${_R%/}\"; node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" hook codebuddy observation",
|
||||
"timeout": 120
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"PreToolUse": [
|
||||
{
|
||||
"matcher": "Read",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"shell": "bash",
|
||||
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CODEBUDDY_PLUGIN_ROOT:-$HOME/.codebuddy-mem}\"; _R=\"${_R%/}\"; node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" hook codebuddy file-context",
|
||||
"timeout": 60
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"Stop": [
|
||||
{
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"shell": "bash",
|
||||
"command": "export PATH=\"$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH\"; _R=\"${CODEBUDDY_PLUGIN_ROOT:-$HOME/.codebuddy-mem}\"; _R=\"${_R%/}\"; node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" hook codebuddy summarize",
|
||||
"timeout": 120
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
89
install.sh
Executable file
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env bash
|
||||
# codebuddy-mem 一键安装脚本
|
||||
# 用法:bash install.sh
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
INSTALL_DIR="${HOME}/.codebuddy-mem"
|
||||
|
||||
echo "=== codebuddy-mem v13.0.0 安装 ==="
|
||||
|
||||
# 1. 复制到安装目录
|
||||
if [ "$SCRIPT_DIR" != "$INSTALL_DIR" ]; then
|
||||
echo "复制文件到 ${INSTALL_DIR}..."
|
||||
rsync -a --exclude='node_modules' --exclude='.git' "$SCRIPT_DIR/" "$INSTALL_DIR/"
|
||||
fi
|
||||
|
||||
# 2. 检测运行时
|
||||
RUNTIME=""
|
||||
if command -v bun &>/dev/null; then
|
||||
RUNTIME="bun"
|
||||
echo "检测到 Bun: $(bun --version)"
|
||||
elif command -v node &>/dev/null; then
|
||||
RUNTIME="node"
|
||||
NODE_VERSION=$(node -v | sed 's/v//')
|
||||
echo "检测到 Node.js: v${NODE_VERSION}"
|
||||
if [ "$(echo "$NODE_VERSION" | cut -d. -f1)" -lt 18 ]; then
|
||||
echo "错误: Node.js >= 18 需要,当前版本 ${NODE_VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "错误: 未检测到 Bun 或 Node.js。请先安装。"
|
||||
echo " Bun: curl -fsSL https://bun.sh/install | bash"
|
||||
echo " Node: https://nodejs.org/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 3. 安装依赖
|
||||
echo "安装依赖..."
|
||||
cd "$INSTALL_DIR"
|
||||
if [ "$RUNTIME" = "bun" ]; then
|
||||
bun install --production
|
||||
else
|
||||
npm install --production
|
||||
fi
|
||||
|
||||
# 4. 创建配置目录
|
||||
mkdir -p "${HOME}/.codebuddy-mem"
|
||||
|
||||
# 5. 检查 MCP 配置
|
||||
MCP_FILE="${HOME}/.codebuddy/.mcp.json"
|
||||
if [ -f "$MCP_FILE" ]; then
|
||||
if grep -q '"codebuddy-mem"' "$MCP_FILE" 2>/dev/null; then
|
||||
echo "MCP 配置已存在,跳过。"
|
||||
else
|
||||
echo "请在 ${MCP_FILE} 中添加 codebuddy-mem 配置:"
|
||||
echo ""
|
||||
echo ' "codebuddy-mem": {'
|
||||
echo ' "type": "stdio",'
|
||||
echo " \"command\": \"${RUNTIME}\","
|
||||
echo " \"args\": [\"${INSTALL_DIR}/scripts/mcp-server.cjs\"]"
|
||||
echo ' }'
|
||||
fi
|
||||
else
|
||||
echo "创建默认 MCP 配置..."
|
||||
mkdir -p "$(dirname "$MCP_FILE")"
|
||||
cat > "$MCP_FILE" <<EOF
|
||||
{
|
||||
"mcpServers": {
|
||||
"codebuddy-mem": {
|
||||
"type": "stdio",
|
||||
"command": "${RUNTIME}",
|
||||
"args": ["${INSTALL_DIR}/scripts/mcp-server.cjs"]
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
|
||||
# 6. 完成
|
||||
echo ""
|
||||
echo "=== 安装完成 ==="
|
||||
echo "配置文件: ${HOME}/.codebuddy-mem/settings.json"
|
||||
echo "数据目录: ${HOME}/.codebuddy-mem/"
|
||||
echo ""
|
||||
echo "如需配置 DeepSeek API Key:"
|
||||
echo " echo '{\"CODEBUDDY_MEM_DEEPSEEK_API_KEY\":\"sk-xxx\"}' > ${HOME}/.codebuddy-mem/settings.json"
|
||||
echo ""
|
||||
echo "重启 CodeBuddy Code 生效。"
|
||||
24
modes/code--ar.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Arabic)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in العربية",
|
||||
|
||||
"xml_title_placeholder": "[**title**: عنوان قصير يلخص الإجراء أو الموضوع الأساسي]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: شرح في جملة واحدة (بحد أقصى 24 كلمة)]",
|
||||
"xml_fact_placeholder": "[بيان موجز ومكتفٍ ذاتياً]",
|
||||
"xml_narrative_placeholder": "[**narrative**: السياق الكامل: ما تم إنجازه، كيف يعمل، لماذا هو مهم]",
|
||||
"xml_concept_placeholder": "[فئة-نوع-المعرفة]",
|
||||
"xml_file_placeholder": "[المسار/إلى/الملف]",
|
||||
|
||||
"xml_summary_request_placeholder": "[عنوان قصير يلخص طلب المستخدم وجوهر ما تمت مناقشته/إنجازه]",
|
||||
"xml_summary_investigated_placeholder": "[ما الذي تم استكشافه حتى الآن؟ ما الذي تم فحصه؟]",
|
||||
"xml_summary_learned_placeholder": "[ما الذي تعلمته عن كيفية عمل الأشياء؟]",
|
||||
"xml_summary_completed_placeholder": "[ما العمل الذي تم إنجازه حتى الآن؟ ما الذي تم شحنه أو تغييره؟]",
|
||||
"xml_summary_next_steps_placeholder": "[ما الذي تعمل عليه بنشاط أو تخطط للعمل عليه بعد ذلك في هذه الجلسة؟]",
|
||||
"xml_summary_notes_placeholder": "[رؤى أو ملاحظات إضافية حول التقدم الحالي]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in العربية",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in العربية"
|
||||
}
|
||||
}
|
||||
24
modes/code--bn.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Bengali)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in বাংলা",
|
||||
|
||||
"xml_title_placeholder": "[**title**: মূল কাজ বা বিষয় বর্ণনাকারী সংক্ষিপ্ত শিরোনাম]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: এক বাক্যে ব্যাখ্যা (সর্বোচ্চ ২৪ শব্দ)]",
|
||||
"xml_fact_placeholder": "[সংক্ষিপ্ত, স্বয়ংসম্পূর্ণ বিবৃতি]",
|
||||
"xml_narrative_placeholder": "[**narrative**: সম্পূর্ণ প্রসঙ্গ: কী করা হয়েছে, এটি কীভাবে কাজ করে, কেন এটি গুরুত্বপূর্ণ]",
|
||||
"xml_concept_placeholder": "[জ্ঞান-ধরন-বিভাগ]",
|
||||
"xml_file_placeholder": "[ফাইলের/পথ]",
|
||||
|
||||
"xml_summary_request_placeholder": "[সংক্ষিপ্ত শিরোনাম যা ব্যবহারকারীর অনুরোধ এবং আলোচনা/সম্পাদিত বিষয়ের সারমর্ম বর্ণনা করে]",
|
||||
"xml_summary_investigated_placeholder": "[এখন পর্যন্ত কী অনুসন্ধান করা হয়েছে? কী পর্যালোচনা করা হয়েছে?]",
|
||||
"xml_summary_learned_placeholder": "[জিনিসগুলি কীভাবে কাজ করে সে সম্পর্কে আপনি কী শিখেছেন?]",
|
||||
"xml_summary_completed_placeholder": "[এখন পর্যন্ত কোন কাজ সম্পন্ন হয়েছে? কী সরবরাহ বা পরিবর্তন করা হয়েছে?]",
|
||||
"xml_summary_next_steps_placeholder": "[এই সেশনে আপনি সক্রিয়ভাবে কী নিয়ে কাজ করছেন বা পরবর্তীতে করার পরিকল্পনা করছেন?]",
|
||||
"xml_summary_notes_placeholder": "[বর্তমান অগ্রগতি সম্পর্কে অতিরিক্ত অন্তর্দৃষ্টি বা পর্যবেক্ষণ]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in বাংলা",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in বাংলা"
|
||||
}
|
||||
}
|
||||
8
modes/code--chill.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "Code Development (Chill)",
|
||||
"prompts": {
|
||||
"recording_focus": "WHAT TO RECORD (SELECTIVE MODE)\n--------------------------------\nOnly record work that would be painful to rediscover:\n- Features that shipped or bugs that got fixed\n- Architectural decisions and their rationale\n- Non-obvious gotchas you'd regret forgetting\n- Significant refactors that change how code is organized\n\nSkip the obvious stuff:\n- Incremental steps toward a goal (just record the final result)\n- Straightforward implementations that follow established patterns\n- Changes that are clear from reading the code or git history\n\nUse verbs like: implemented, fixed, deployed, decided, discovered, restructured\n\n✅ GOOD (would be painful to rediscover):\n- \"Auth tokens now expire after 24h - security requirement from compliance\"\n- \"Moved from REST to GraphQL for the dashboard - 3x faster load times\"\n- \"SQLite locks under concurrent writes - switched to WAL mode\"\n\n❌ SKIP (obvious from code/git):\n- \"Added error handling to the API endpoint\"\n- \"Created a new component for the form\"\n- \"Updated dependencies to latest versions\"",
|
||||
|
||||
"skip_guidance": "WHEN TO SKIP (BE LIBERAL)\n-------------------------\nSkip routine operations:\n- Empty status checks\n- Package installations\n- Simple file listings\n- Repetitive operations already documented\n- File research that comes back empty\n\nSkip obvious work:\n- Straightforward implementations following existing patterns\n- Minor refactors (rename, extract, inline)\n- Incremental progress toward a larger goal\n- Changes that are self-explanatory from the code\n- Routine config/dependency updates\n- Exploratory code reading without significant findings\n\n**When in doubt, skip it.** Less is more. Only record what you'd be frustrated to figure out again."
|
||||
}
|
||||
}
|
||||
24
modes/code--cs.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Czech)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in čeština",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Krátký název zachycující hlavní akci nebo téma]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Vysvětlení v jedné větě (maximálně 24 slov)]",
|
||||
"xml_fact_placeholder": "[Stručné, samostatné tvrzení]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Plný kontext: co bylo provedeno, jak to funguje, proč je to důležité]",
|
||||
"xml_concept_placeholder": "[kategorie-typu-znalosti]",
|
||||
"xml_file_placeholder": "[cesta/k/souboru]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Krátký název zachycující požadavek uživatele a podstatu toho, co bylo diskutováno/provedeno]",
|
||||
"xml_summary_investigated_placeholder": "[Co bylo dosud prozkoumáno? Co bylo přezkoumáno?]",
|
||||
"xml_summary_learned_placeholder": "[Co jste se naučili o tom, jak věci fungují?]",
|
||||
"xml_summary_completed_placeholder": "[Jaká práce byla dosud dokončena? Co bylo dodáno nebo změněno?]",
|
||||
"xml_summary_next_steps_placeholder": "[Na čem aktivně pracujete nebo plánujete pracovat dále v této relaci?]",
|
||||
"xml_summary_notes_placeholder": "[Další poznatky nebo poznámky o aktuálním pokroku]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in čeština",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in čeština"
|
||||
}
|
||||
}
|
||||
24
modes/code--da.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Danish)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in dansk",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Kort titel der beskriver hovedhandlingen eller emnet]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Forklaring i én sætning (maksimalt 24 ord)]",
|
||||
"xml_fact_placeholder": "[Kortfattet, selvstændig erklæring]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Fuld kontekst: hvad der blev gjort, hvordan det virker, hvorfor det er vigtigt]",
|
||||
"xml_concept_placeholder": "[videnstype-kategori]",
|
||||
"xml_file_placeholder": "[sti/til/fil]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Kort titel der beskriver brugerens anmodning og essensen af hvad der blev diskuteret/gjort]",
|
||||
"xml_summary_investigated_placeholder": "[Hvad er der blevet udforsket indtil videre? Hvad er blevet gennemgået?]",
|
||||
"xml_summary_learned_placeholder": "[Hvad har du lært om, hvordan tingene fungerer?]",
|
||||
"xml_summary_completed_placeholder": "[Hvilket arbejde er blevet afsluttet indtil videre? Hvad er blevet leveret eller ændret?]",
|
||||
"xml_summary_next_steps_placeholder": "[Hvad arbejder du aktivt på eller planlægger at arbejde på næste i denne session?]",
|
||||
"xml_summary_notes_placeholder": "[Yderligere indsigter eller observationer om den aktuelle fremgang]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in dansk",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in dansk"
|
||||
}
|
||||
}
|
||||
24
modes/code--de.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (German)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Deutsch",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Kurzer Titel, der die Kernaktion oder das Thema erfasst]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Erklärung in einem Satz (maximal 24 Wörter)]",
|
||||
"xml_fact_placeholder": "[Prägnante, eigenständige Aussage]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Vollständiger Kontext: Was wurde getan, wie es funktioniert, warum es wichtig ist]",
|
||||
"xml_concept_placeholder": "[Wissenstypkategorie]",
|
||||
"xml_file_placeholder": "[pfad/zur/datei]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Kurzer Titel, der die Anfrage des Benutzers UND die Substanz dessen erfasst, was besprochen/getan wurde]",
|
||||
"xml_summary_investigated_placeholder": "[Was wurde bisher untersucht? Was wurde überprüft?]",
|
||||
"xml_summary_learned_placeholder": "[Was haben Sie über die Funktionsweise gelernt?]",
|
||||
"xml_summary_completed_placeholder": "[Welche Arbeit wurde bisher abgeschlossen? Was wurde ausgeliefert oder geändert?]",
|
||||
"xml_summary_next_steps_placeholder": "[Woran arbeiten Sie aktiv oder planen Sie als Nächstes in dieser Sitzung zu arbeiten?]",
|
||||
"xml_summary_notes_placeholder": "[Zusätzliche Erkenntnisse oder Beobachtungen zum aktuellen Fortschritt]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Deutsch",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in Deutsch"
|
||||
}
|
||||
}
|
||||
24
modes/code--el.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Greek)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in ελληνικά",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Σύντομος τίτλος που περιγράφει την κύρια ενέργεια ή το θέμα]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Εξήγηση σε μία πρόταση (μέγιστο 24 λέξεις)]",
|
||||
"xml_fact_placeholder": "[Συνοπτική, αυτόνομη δήλωση]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Πλήρες πλαίσιο: τι έγινε, πώς λειτουργεί, γιατί είναι σημαντικό]",
|
||||
"xml_concept_placeholder": "[κατηγορία-τύπου-γνώσης]",
|
||||
"xml_file_placeholder": "[διαδρομή/προς/αρχείο]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Σύντομος τίτλος που περιγράφει το αίτημα του χρήστη και την ουσία του τι συζητήθηκε/έγινε]",
|
||||
"xml_summary_investigated_placeholder": "[Τι έχει εξερευνηθεί μέχρι στιγμής; Τι έχει εξεταστεί;]",
|
||||
"xml_summary_learned_placeholder": "[Τι έχετε μάθει για το πώς λειτουργούν τα πράγματα;]",
|
||||
"xml_summary_completed_placeholder": "[Ποια εργασία έχει ολοκληρωθεί μέχρι στιγμής; Τι έχει παραδοθεί ή αλλάξει;]",
|
||||
"xml_summary_next_steps_placeholder": "[Σε τι εργάζεστε ενεργά ή σχεδιάζετε να εργαστείτε στη συνέχεια σε αυτή τη συνεδρία;]",
|
||||
"xml_summary_notes_placeholder": "[Πρόσθετες γνώσεις ή παρατηρήσεις σχετικά με την τρέχουσα πρόοδο]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in ελληνικά",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in ελληνικά"
|
||||
}
|
||||
}
|
||||
24
modes/code--es.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Spanish)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in español",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Título breve que captura la acción o tema principal]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Explicación de una oración (máximo 24 palabras)]",
|
||||
"xml_fact_placeholder": "[Declaración concisa y autónoma]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Contexto completo: Qué se hizo, cómo funciona, por qué es importante]",
|
||||
"xml_concept_placeholder": "[categoría-de-tipo-de-conocimiento]",
|
||||
"xml_file_placeholder": "[ruta/al/archivo]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Título breve que captura la solicitud del usuario Y la sustancia de lo que se discutió/hizo]",
|
||||
"xml_summary_investigated_placeholder": "[¿Qué se ha explorado hasta ahora? ¿Qué se examinó?]",
|
||||
"xml_summary_learned_placeholder": "[¿Qué has aprendido sobre cómo funcionan las cosas?]",
|
||||
"xml_summary_completed_placeholder": "[¿Qué trabajo se ha completado hasta ahora? ¿Qué se ha enviado o cambiado?]",
|
||||
"xml_summary_next_steps_placeholder": "[¿En qué estás trabajando activamente o planeas trabajar a continuación en esta sesión?]",
|
||||
"xml_summary_notes_placeholder": "[Información adicional u observaciones sobre el progreso actual]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in español",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in español"
|
||||
}
|
||||
}
|
||||
24
modes/code--fi.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Finnish)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in suomi",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Lyhyt otsikko, joka kuvaa päätehtävää tai aihetta]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Yhden lauseen selitys (enintään 24 sanaa)]",
|
||||
"xml_fact_placeholder": "[Tiivis, itsenäinen väite]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Täydellinen konteksti: mitä tehtiin, miten se toimii, miksi se on tärkeää]",
|
||||
"xml_concept_placeholder": "[tietolaji-kategoria]",
|
||||
"xml_file_placeholder": "[polku/tiedostoon]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Lyhyt otsikko, joka kuvaa käyttäjän pyynnön ja keskustellun/tehdyn asian ytimen]",
|
||||
"xml_summary_investigated_placeholder": "[Mitä on tutkittu tähän mennessä? Mitä on tarkasteltu?]",
|
||||
"xml_summary_learned_placeholder": "[Mitä olet oppinut siitä, miten asiat toimivat?]",
|
||||
"xml_summary_completed_placeholder": "[Mikä työ on valmistunut tähän mennessä? Mitä on toimitettu tai muutettu?]",
|
||||
"xml_summary_next_steps_placeholder": "[Mitä työstät aktiivisesti tai aiot työstää seuraavaksi tässä istunnossa?]",
|
||||
"xml_summary_notes_placeholder": "[Lisätietoja tai havaintoja nykyisestä edistymisestä]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in suomi",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in suomi"
|
||||
}
|
||||
}
|
||||
24
modes/code--fr.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (French)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in français",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Titre court capturant l'action ou le sujet principal]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Explication en une phrase (maximum 24 mots)]",
|
||||
"xml_fact_placeholder": "[Déclaration concise et autonome]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Contexte complet : Ce qui a été fait, comment cela fonctionne, pourquoi c'est important]",
|
||||
"xml_concept_placeholder": "[catégorie-de-type-de-connaissance]",
|
||||
"xml_file_placeholder": "[chemin/vers/fichier]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Titre court capturant la demande de l'utilisateur ET la substance de ce qui a été discuté/fait]",
|
||||
"xml_summary_investigated_placeholder": "[Qu'est-ce qui a été exploré jusqu'à présent ? Qu'est-ce qui a été examiné ?]",
|
||||
"xml_summary_learned_placeholder": "[Qu'avez-vous appris sur le fonctionnement des choses ?]",
|
||||
"xml_summary_completed_placeholder": "[Quel travail a été complété jusqu'à présent ? Qu'est-ce qui a été livré ou modifié ?]",
|
||||
"xml_summary_next_steps_placeholder": "[Sur quoi travaillez-vous activement ou prévoyez-vous de travailler ensuite dans cette session ?]",
|
||||
"xml_summary_notes_placeholder": "[Informations supplémentaires ou observations sur la progression actuelle]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in français",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in français"
|
||||
}
|
||||
}
|
||||
24
modes/code--he.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Hebrew)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in עברית",
|
||||
|
||||
"xml_title_placeholder": "[**title**: כותרת קצרה שמתארת את הפעולה או הנושא המרכזי]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: הסבר במשפט אחד (מקסימום 24 מילים)]",
|
||||
"xml_fact_placeholder": "[הצהרה תמציתית ועצמאית]",
|
||||
"xml_narrative_placeholder": "[**narrative**: הקשר מלא: מה נעשה, איך זה עובד, למה זה חשוב]",
|
||||
"xml_concept_placeholder": "[קטגוריית-סוג-ידע]",
|
||||
"xml_file_placeholder": "[נתיב/לקובץ]",
|
||||
|
||||
"xml_summary_request_placeholder": "[כותרת קצרה שמתארת את בקשת המשתמש ואת מהות מה שנדון/נעשה]",
|
||||
"xml_summary_investigated_placeholder": "[מה נחקר עד כה? מה נבדק?]",
|
||||
"xml_summary_learned_placeholder": "[מה למדת על איך דברים עובדים?]",
|
||||
"xml_summary_completed_placeholder": "[איזו עבודה הושלמה עד כה? מה נשלח או שונה?]",
|
||||
"xml_summary_next_steps_placeholder": "[על מה אתה עובד באופן פעיל או מתכנן לעבוד הלאה בסשן הזה?]",
|
||||
"xml_summary_notes_placeholder": "[תובנות או הערות נוספות על ההתקדמות הנוכחית]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in עברית",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in עברית"
|
||||
}
|
||||
}
|
||||
24
modes/code--hi.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Hindi)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in हिन्दी",
|
||||
|
||||
"xml_title_placeholder": "[**title**: मुख्य कार्रवाई या विषय को दर्शाने वाला संक्षिप्त शीर्षक]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: एक वाक्य में स्पष्टीकरण (अधिकतम 24 शब्द)]",
|
||||
"xml_fact_placeholder": "[संक्षिप्त, स्व-निहित कथन]",
|
||||
"xml_narrative_placeholder": "[**narrative**: पूर्ण संदर्भ: क्या किया गया, यह कैसे काम करता है, यह क्यों महत्वपूर्ण है]",
|
||||
"xml_concept_placeholder": "[ज्ञान-प्रकार-श्रेणी]",
|
||||
"xml_file_placeholder": "[फ़ाइल/का/पथ]",
|
||||
|
||||
"xml_summary_request_placeholder": "[संक्षिप्त शीर्षक जो उपयोगकर्ता के अनुरोध और चर्चा/किए गए कार्य के सार को दर्शाता है]",
|
||||
"xml_summary_investigated_placeholder": "[अब तक क्या खोजा गया है? क्या समीक्षा की गई है?]",
|
||||
"xml_summary_learned_placeholder": "[आपने चीजों के काम करने के तरीके के बारे में क्या सीखा?]",
|
||||
"xml_summary_completed_placeholder": "[अब तक कौन सा काम पूरा हुआ है? क्या भेजा गया या बदला गया?]",
|
||||
"xml_summary_next_steps_placeholder": "[इस सत्र में आप सक्रिय रूप से किस पर काम कर रहे हैं या आगे काम करने की योजना बना रहे हैं?]",
|
||||
"xml_summary_notes_placeholder": "[वर्तमान प्रगति पर अतिरिक्त अंतर्दृष्टि या टिप्पणियां]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in हिन्दी",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in हिन्दी"
|
||||
}
|
||||
}
|
||||
24
modes/code--hu.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Hungarian)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in magyar",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Rövid cím, amely megragadja a fő műveletet vagy témát]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Egyetlen mondatos magyarázat (maximum 24 szó)]",
|
||||
"xml_fact_placeholder": "[Tömör, önálló kijelentés]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Teljes kontextus: mit csináltak, hogyan működik, miért fontos]",
|
||||
"xml_concept_placeholder": "[tudástípus-kategória]",
|
||||
"xml_file_placeholder": "[fájl/elérési/útja]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Rövid cím, amely megragadja a felhasználó kérését és a megvitatott/végrehajtott dolgok lényegét]",
|
||||
"xml_summary_investigated_placeholder": "[Mit vizsgáltak meg eddig? Mit tekintettek át?]",
|
||||
"xml_summary_learned_placeholder": "[Mit tanultál arról, hogyan működnek a dolgok?]",
|
||||
"xml_summary_completed_placeholder": "[Milyen munka fejeződött be eddig? Mit szállítottak le vagy változtattak meg?]",
|
||||
"xml_summary_next_steps_placeholder": "[Min dolgozol aktívan, vagy min tervezel dolgozni ebben az ülésben?]",
|
||||
"xml_summary_notes_placeholder": "[További meglátások vagy megfigyelések a jelenlegi előrehaladásról]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in magyar",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in magyar"
|
||||
}
|
||||
}
|
||||
24
modes/code--id.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Indonesian)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Bahasa Indonesia",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Judul singkat yang menangkap tindakan atau topik inti]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Penjelasan satu kalimat (maksimal 24 kata)]",
|
||||
"xml_fact_placeholder": "[Pernyataan ringkas dan mandiri]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Konteks lengkap: apa yang dilakukan, bagaimana cara kerjanya, mengapa penting]",
|
||||
"xml_concept_placeholder": "[kategori-jenis-pengetahuan]",
|
||||
"xml_file_placeholder": "[jalur/ke/file]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Judul singkat yang menangkap permintaan pengguna dan inti dari apa yang didiskusikan/dilakukan]",
|
||||
"xml_summary_investigated_placeholder": "[Apa yang telah dieksplorasi sejauh ini? Apa yang telah diperiksa?]",
|
||||
"xml_summary_learned_placeholder": "[Apa yang Anda pelajari tentang cara kerja sesuatu?]",
|
||||
"xml_summary_completed_placeholder": "[Pekerjaan apa yang telah diselesaikan sejauh ini? Apa yang telah dikirim atau diubah?]",
|
||||
"xml_summary_next_steps_placeholder": "[Apa yang sedang Anda kerjakan secara aktif atau rencanakan untuk dikerjakan selanjutnya dalam sesi ini?]",
|
||||
"xml_summary_notes_placeholder": "[Wawasan atau pengamatan tambahan tentang kemajuan saat ini]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Bahasa Indonesia",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in Bahasa Indonesia"
|
||||
}
|
||||
}
|
||||
24
modes/code--it.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Italian)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in italiano",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Titolo breve che cattura l'azione o l'argomento principale]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Spiegazione in una frase (massimo 24 parole)]",
|
||||
"xml_fact_placeholder": "[Dichiarazione concisa e autonoma]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Contesto completo: cosa è stato fatto, come funziona, perché è importante]",
|
||||
"xml_concept_placeholder": "[categoria-tipo-conoscenza]",
|
||||
"xml_file_placeholder": "[percorso/del/file]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Titolo breve che cattura la richiesta dell'utente e l'essenza di ciò che è stato discusso/fatto]",
|
||||
"xml_summary_investigated_placeholder": "[Cosa è stato esplorato finora? Cosa è stato esaminato?]",
|
||||
"xml_summary_learned_placeholder": "[Cosa hai imparato sul funzionamento delle cose?]",
|
||||
"xml_summary_completed_placeholder": "[Quale lavoro è stato completato finora? Cosa è stato consegnato o modificato?]",
|
||||
"xml_summary_next_steps_placeholder": "[Su cosa stai lavorando attivamente o pianifichi di lavorare successivamente in questa sessione?]",
|
||||
"xml_summary_notes_placeholder": "[Ulteriori intuizioni o osservazioni sul progresso attuale]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in italiano",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in italiano"
|
||||
}
|
||||
}
|
||||
24
modes/code--ja.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Japanese)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 日本語",
|
||||
|
||||
"xml_title_placeholder": "[**title**: コアとなるアクションやトピックを捉えた短いタイトル]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: 一文での説明(最大24単語)]",
|
||||
"xml_fact_placeholder": "[簡潔で自己完結した記述]",
|
||||
"xml_narrative_placeholder": "[**narrative**: 完全なコンテキスト:何が行われたか、どのように機能するか、なぜ重要か]",
|
||||
"xml_concept_placeholder": "[知識タイプのカテゴリ]",
|
||||
"xml_file_placeholder": "[ファイルへのパス]",
|
||||
|
||||
"xml_summary_request_placeholder": "[ユーザーのリクエストと議論/実行された内容の本質を捉えた短いタイトル]",
|
||||
"xml_summary_investigated_placeholder": "[これまでに何を調査しましたか?何を検証しましたか?]",
|
||||
"xml_summary_learned_placeholder": "[仕組みについて何を学びましたか?]",
|
||||
"xml_summary_completed_placeholder": "[これまでにどんな作業が完了しましたか?何が出荷または変更されましたか?]",
|
||||
"xml_summary_next_steps_placeholder": "[このセッションで次に積極的に取り組んでいる、または取り組む予定のことは何ですか?]",
|
||||
"xml_summary_notes_placeholder": "[現在の進捗に関する追加の洞察や観察]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 日本語",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in 日本語"
|
||||
}
|
||||
}
|
||||
24
modes/code--ko.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Korean)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 한국어",
|
||||
|
||||
"xml_title_placeholder": "[**title**: 핵심 작업이나 주제를 포착하는 짧은 제목]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: 한 문장 설명 (최대 24단어)]",
|
||||
"xml_fact_placeholder": "[간결하고 독립적인 진술]",
|
||||
"xml_narrative_placeholder": "[**narrative**: 전체 컨텍스트: 무엇을 했는지, 어떻게 작동하는지, 왜 중요한지]",
|
||||
"xml_concept_placeholder": "[지식 유형 카테고리]",
|
||||
"xml_file_placeholder": "[파일 경로]",
|
||||
|
||||
"xml_summary_request_placeholder": "[사용자의 요청과 논의/수행된 내용의 본질을 포착하는 짧은 제목]",
|
||||
"xml_summary_investigated_placeholder": "[지금까지 무엇을 탐색했습니까? 무엇을 검토했습니까?]",
|
||||
"xml_summary_learned_placeholder": "[작동 방식에 대해 무엇을 배웠습니까?]",
|
||||
"xml_summary_completed_placeholder": "[지금까지 어떤 작업이 완료되었습니까? 무엇이 배포되거나 변경되었습니까?]",
|
||||
"xml_summary_next_steps_placeholder": "[이 세션에서 다음으로 적극적으로 작업 중이거나 작업할 계획인 것은 무엇입니까?]",
|
||||
"xml_summary_notes_placeholder": "[현재 진행 상황에 대한 추가 통찰이나 관찰]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 한국어",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in 한국어"
|
||||
}
|
||||
}
|
||||
24
modes/code--nl.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Dutch)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Nederlands",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Korte titel die de kernactie of het onderwerp beschrijft]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Uitleg in één zin (maximaal 24 woorden)]",
|
||||
"xml_fact_placeholder": "[Beknopte, op zichzelf staande verklaring]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Volledige context: wat er is gedaan, hoe het werkt, waarom het belangrijk is]",
|
||||
"xml_concept_placeholder": "[kennistype-categorie]",
|
||||
"xml_file_placeholder": "[pad/naar/bestand]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Korte titel die het verzoek van de gebruiker en de essentie van wat is besproken/gedaan beschrijft]",
|
||||
"xml_summary_investigated_placeholder": "[Wat is er tot nu toe onderzocht? Wat is er bekeken?]",
|
||||
"xml_summary_learned_placeholder": "[Wat heb je geleerd over hoe dingen werken?]",
|
||||
"xml_summary_completed_placeholder": "[Welk werk is er tot nu toe voltooid? Wat is er opgeleverd of gewijzigd?]",
|
||||
"xml_summary_next_steps_placeholder": "[Waar werk je actief aan of plan je verder aan te werken in deze sessie?]",
|
||||
"xml_summary_notes_placeholder": "[Aanvullende inzichten of observaties over de huidige voortgang]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Nederlands",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in Nederlands"
|
||||
}
|
||||
}
|
||||
24
modes/code--no.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Norwegian)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in norsk",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Kort tittel som fanger kjernehandlingen eller emnet]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Forklaring i én setning (maksimalt 24 ord)]",
|
||||
"xml_fact_placeholder": "[Kortfattet, selvstendig uttalelse]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Full kontekst: hva som ble gjort, hvordan det fungerer, hvorfor det er viktig]",
|
||||
"xml_concept_placeholder": "[kunnskapstype-kategori]",
|
||||
"xml_file_placeholder": "[sti/til/fil]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Kort tittel som fanger brukerens forespørsel og essensen av hva som ble diskutert/gjort]",
|
||||
"xml_summary_investigated_placeholder": "[Hva har blitt utforsket så langt? Hva har blitt gjennomgått?]",
|
||||
"xml_summary_learned_placeholder": "[Hva har du lært om hvordan ting fungerer?]",
|
||||
"xml_summary_completed_placeholder": "[Hvilket arbeid har blitt fullført så langt? Hva har blitt levert eller endret?]",
|
||||
"xml_summary_next_steps_placeholder": "[Hva jobber du aktivt med eller planlegger å jobbe med videre i denne økten?]",
|
||||
"xml_summary_notes_placeholder": "[Ytterligere innsikter eller observasjoner om gjeldende fremgang]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in norsk",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in norsk"
|
||||
}
|
||||
}
|
||||
24
modes/code--pl.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Polish)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in polski",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Krótki tytuł opisujący główne działanie lub temat]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Wyjaśnienie w jednym zdaniu (maksymalnie 24 słowa)]",
|
||||
"xml_fact_placeholder": "[Zwięzłe, samodzielne stwierdzenie]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Pełny kontekst: co zostało zrobione, jak to działa, dlaczego jest ważne]",
|
||||
"xml_concept_placeholder": "[kategoria-typu-wiedzy]",
|
||||
"xml_file_placeholder": "[ścieżka/do/pliku]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Krótki tytuł opisujący żądanie użytkownika i istotę tego, co zostało omówione/zrobione]",
|
||||
"xml_summary_investigated_placeholder": "[Co zostało zbadane do tej pory? Co zostało sprawdzone?]",
|
||||
"xml_summary_learned_placeholder": "[Czego się nauczyłeś o tym, jak działają rzeczy?]",
|
||||
"xml_summary_completed_placeholder": "[Jaka praca została ukończona do tej pory? Co zostało wdrożone lub zmienione?]",
|
||||
"xml_summary_next_steps_placeholder": "[Nad czym aktywnie pracujesz lub planujesz pracować w tej sesji?]",
|
||||
"xml_summary_notes_placeholder": "[Dodatkowe spostrzeżenia lub uwagi dotyczące obecnego postępu]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in polski",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in polski"
|
||||
}
|
||||
}
|
||||
24
modes/code--pt-br.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Brazilian Portuguese)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in português",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Título curto capturando a ação principal ou tópico]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Explicação em uma frase (máximo 24 palavras)]",
|
||||
"xml_fact_placeholder": "[Declaração concisa e autônoma]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Contexto completo: O que foi feito, como funciona, por que é importante]",
|
||||
"xml_concept_placeholder": "[categoria-de-tipo-de-conhecimento]",
|
||||
"xml_file_placeholder": "[caminho/para/arquivo]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Título curto capturando a solicitação do usuário E a substância do que foi discutido/feito]",
|
||||
"xml_summary_investigated_placeholder": "[O que foi explorado até agora? O que foi examinado?]",
|
||||
"xml_summary_learned_placeholder": "[O que você aprendeu sobre como as coisas funcionam?]",
|
||||
"xml_summary_completed_placeholder": "[Que trabalho foi concluído até agora? O que foi entregue ou alterado?]",
|
||||
"xml_summary_next_steps_placeholder": "[No que você está trabalhando ativamente ou planeja trabalhar a seguir nesta sessão?]",
|
||||
"xml_summary_notes_placeholder": "[Insights adicionais ou observações sobre o progresso atual]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in português",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in português"
|
||||
}
|
||||
}
|
||||
24
modes/code--ro.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Romanian)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in română",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Titlu scurt care surprinde acțiunea sau subiectul principal]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Explicație într-o propoziție (maxim 24 cuvinte)]",
|
||||
"xml_fact_placeholder": "[Afirmație concisă și autonomă]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Context complet: ce s-a făcut, cum funcționează, de ce este important]",
|
||||
"xml_concept_placeholder": "[categorie-tip-cunoștințe]",
|
||||
"xml_file_placeholder": "[cale/către/fișier]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Titlu scurt care surprinde solicitarea utilizatorului și esența a ceea ce s-a discutat/făcut]",
|
||||
"xml_summary_investigated_placeholder": "[Ce s-a explorat până acum? Ce s-a revizuit?]",
|
||||
"xml_summary_learned_placeholder": "[Ce ai învățat despre modul în care funcționează lucrurile?]",
|
||||
"xml_summary_completed_placeholder": "[Ce muncă a fost finalizată până acum? Ce a fost livrat sau modificat?]",
|
||||
"xml_summary_next_steps_placeholder": "[La ce lucrezi activ sau plănuiești să lucrezi în continuare în această sesiune?]",
|
||||
"xml_summary_notes_placeholder": "[Informații suplimentare sau observații despre progresul curent]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in română",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in română"
|
||||
}
|
||||
}
|
||||
24
modes/code--ru.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Russian)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in русский",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Краткое название, отражающее основное действие или тему]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Объяснение одним предложением (максимум 24 слова)]",
|
||||
"xml_fact_placeholder": "[Краткое, самостоятельное утверждение]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Полный контекст: Что было сделано, как это работает, почему это важно]",
|
||||
"xml_concept_placeholder": "[категория-типа-знания]",
|
||||
"xml_file_placeholder": "[путь/к/файлу]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Краткое название, отражающее запрос пользователя И суть того, что обсуждалось/делалось]",
|
||||
"xml_summary_investigated_placeholder": "[Что было исследовано до сих пор? Что было рассмотрено?]",
|
||||
"xml_summary_learned_placeholder": "[Что вы узнали о том, как все работает?]",
|
||||
"xml_summary_completed_placeholder": "[Какая работа была выполнена до сих пор? Что было отправлено или изменено?]",
|
||||
"xml_summary_next_steps_placeholder": "[Над чем вы активно работаете или планируете работать дальше в этой сессии?]",
|
||||
"xml_summary_notes_placeholder": "[Дополнительные наблюдения или замечания о текущем прогрессе]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in русский",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in русский"
|
||||
}
|
||||
}
|
||||
24
modes/code--sv.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Swedish)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in svenska",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Kort rubrik som fångar kärnåtgärden eller ämnet]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Förklaring i en mening (högst 24 ord)]",
|
||||
"xml_fact_placeholder": "[Koncist, fristående påstående]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Fullständigt sammanhang: vad som gjordes, hur det fungerar, varför det är viktigt]",
|
||||
"xml_concept_placeholder": "[kunskapstyp-kategori]",
|
||||
"xml_file_placeholder": "[sökväg/till/fil]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Kort rubrik som fångar användarens begäran och kärnan i vad som diskuterades/gjordes]",
|
||||
"xml_summary_investigated_placeholder": "[Vad har utforskats hittills? Vad har granskats?]",
|
||||
"xml_summary_learned_placeholder": "[Vad har du lärt dig om hur saker fungerar?]",
|
||||
"xml_summary_completed_placeholder": "[Vilket arbete har slutförts hittills? Vad har levererats eller ändrats?]",
|
||||
"xml_summary_next_steps_placeholder": "[Vad arbetar du aktivt med eller planerar att arbeta med härnäst i denna session?]",
|
||||
"xml_summary_notes_placeholder": "[Ytterligare insikter eller observationer om nuvarande framsteg]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in svenska",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in svenska"
|
||||
}
|
||||
}
|
||||
24
modes/code--th.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Thai)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in ภาษาไทย",
|
||||
|
||||
"xml_title_placeholder": "[**title**: ชื่อสั้นที่จับประเด็นหลักหรือหัวข้อ]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: คำอธิบายหึ่งประโยค (สูงสุด 24 คำ)]",
|
||||
"xml_fact_placeholder": "[ข้อความที่กระชับและสมบูรณ์ในตัวเอง]",
|
||||
"xml_narrative_placeholder": "[**narrative**: บริบทเต็มรูปแบบ: สิ่งที่ทำ, วิธีการทำงาน, เหตุผลที่สำคัญ]",
|
||||
"xml_concept_placeholder": "[หมวดหมู่ประเภทความรู้]",
|
||||
"xml_file_placeholder": "[เส้นทาง/ไปยัง/ไฟล์]",
|
||||
|
||||
"xml_summary_request_placeholder": "[ชื่อสั้นที่จับคำขอของผู้ใช้และสาระสำคัญของสิ่งที่อภิปรายหรือทำ]",
|
||||
"xml_summary_investigated_placeholder": "[สำรวจอะไรมาบ้างจนถึงตอนนี้? ตรวจสอบอะไรบ้าง?]",
|
||||
"xml_summary_learned_placeholder": "[คุณได้เรียนรู้อะไรเกี่ยวกับวิธีการทำงานของสิ่งต่างๆ?]",
|
||||
"xml_summary_completed_placeholder": "[งานอะไรเสร็จสมบูรณ์แล้วจนถึงตอนนี้? อะไรถูกส่งมอบหรือเปลี่ยนแปลง?]",
|
||||
"xml_summary_next_steps_placeholder": "[คุณกำลังทำงานอะไรอย่างแข็งขันหรือวางแผนที่จะทำต่อไปในเซสชันนี้?]",
|
||||
"xml_summary_notes_placeholder": "[ข้อมูลเชิงลึกเพิ่มเติมหรือข้อสังเกตเกี่ยวกับความคืบหน้าปัจจุบัน]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in ภาษาไทย",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in ภาษาไทย"
|
||||
}
|
||||
}
|
||||
24
modes/code--tr.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Turkish)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Türkçe",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Ana eylemi veya konuyu özetleyen kısa başlık]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Tek cümlelik açıklama (maksimum 24 kelime)]",
|
||||
"xml_fact_placeholder": "[Kısa ve bağımsız ifade]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Tam bağlam: ne yapıldı, nasıl çalışıyor, neden önemli]",
|
||||
"xml_concept_placeholder": "[bilgi-türü-kategorisi]",
|
||||
"xml_file_placeholder": "[dosya/yolu]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Kullanıcının talebini ve tartışılan/yapılan şeyin özünü özetleyen kısa başlık]",
|
||||
"xml_summary_investigated_placeholder": "[Şu ana kadar ne araştırıldı? Ne incelendi?]",
|
||||
"xml_summary_learned_placeholder": "[İşlerin nasıl çalıştığı hakkında ne öğrendiniz?]",
|
||||
"xml_summary_completed_placeholder": "[Şu ana kadar hangi iş tamamlandı? Ne gönderildi veya değiştirildi?]",
|
||||
"xml_summary_next_steps_placeholder": "[Bu oturumda aktif olarak üzerinde çalıştığınız veya çalışmayı planladığınız şey nedir?]",
|
||||
"xml_summary_notes_placeholder": "[Mevcut ilerleme hakkında ek görüşler veya gözlemler]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Türkçe",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in Türkçe"
|
||||
}
|
||||
}
|
||||
24
modes/code--uk.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Ukrainian)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in українська",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Короткий заголовок, що описує основну дію або тему]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Пояснення в одному реченні (максимум 24 слова)]",
|
||||
"xml_fact_placeholder": "[Стисле, самодостатнє твердження]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Повний контекст: що було зроблено, як це працює, чому це важливо]",
|
||||
"xml_concept_placeholder": "[категорія-типу-знань]",
|
||||
"xml_file_placeholder": "[шлях/до/файлу]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Короткий заголовок, що описує запит користувача та суть того, що обговорювалося/робилося]",
|
||||
"xml_summary_investigated_placeholder": "[Що досліджено на даний момент? Що переглянуто?]",
|
||||
"xml_summary_learned_placeholder": "[Що ви дізналися про те, як працюють речі?]",
|
||||
"xml_summary_completed_placeholder": "[Яка робота завершена на даний момент? Що було відправлено або змінено?]",
|
||||
"xml_summary_next_steps_placeholder": "[Над чим ви активно працюєте або плануєте працювати далі в цій сесії?]",
|
||||
"xml_summary_notes_placeholder": "[Додаткові висновки або спостереження щодо поточного прогресу]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in українська",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in українська"
|
||||
}
|
||||
}
|
||||
25
modes/code--ur.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Code Development (Urdu)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in اردو",
|
||||
|
||||
"xml_title_placeholder": "[**title**: بنیادی کام یا موضوع کو بیان کرنے والا مختصر عنوان]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: ایک جملے میں وضاحت (زیادہ سے زیادہ 24 الفاظ)]",
|
||||
"xml_fact_placeholder": "[مختصر، خود کفیل بیان]",
|
||||
"xml_narrative_placeholder": "[**narrative**: مکمل تناسب: کیا کیا گیا، یہ کیسے کام کرتا ہے، یہ کیوں اہم ہے]",
|
||||
"xml_concept_placeholder": "[علم-نوع-قسم]",
|
||||
"xml_file_placeholder": "[فائل/کا/راستہ]",
|
||||
|
||||
"xml_summary_request_placeholder": "[مختصر عنوان جو صارف کے درخواست اور بحث/کیے گئے کام کا خلاصہ بیان کرتا ہے]",
|
||||
"xml_summary_investigated_placeholder": "[اب تک کیا دریافت کیا گیا ہے؟ کیا جائزہ لیا گیا ہے؟]",
|
||||
"xml_summary_learned_placeholder": "[آپ نے چیزوں کے کام کرنے کے طریقے کے بارے میں کیا سیکھا؟]",
|
||||
"xml_summary_completed_placeholder": "[اب تک کون سا کام مکمل ہوا ہے؟ کیا بھیجا گیا یا تبدیل کیا گیا؟]",
|
||||
"xml_summary_next_steps_placeholder": "[اس سیشن میں آپ فعال طور پر کس پر کام کر رہے ہیں یا آگے کام کرنے کا منصوبہ بنا رہے ہیں؟]",
|
||||
"xml_summary_notes_placeholder": "[موجودہ پیشرفت پر اضافی بصیرت یا نوٹس]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in اردو",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in اردو"
|
||||
}
|
||||
}
|
||||
|
||||
24
modes/code--vi.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Vietnamese)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in tiếng Việt",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Tiêu đề ngắn gọn nắm bắt hành động hoặc chủ đề chính]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Giải thích một câu (tối đa 24 từ)]",
|
||||
"xml_fact_placeholder": "[Tuyên bố ngắn gọn, độc lập]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Bối cảnh đầy đủ: Đã làm gì, hoạt động như thế nào, tại sao quan trọng]",
|
||||
"xml_concept_placeholder": "[danh-mục-loại-kiến-thức]",
|
||||
"xml_file_placeholder": "[đường/dẫn/tới/tệp]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Tiêu đề ngắn gọn nắm bắt yêu cầu của người dùng VÀ nội dung của những gì đã được thảo luận/thực hiện]",
|
||||
"xml_summary_investigated_placeholder": "[Đã khám phá những gì cho đến nay? Đã kiểm tra những gì?]",
|
||||
"xml_summary_learned_placeholder": "[Bạn đã học được gì về cách mọi thứ hoạt động?]",
|
||||
"xml_summary_completed_placeholder": "[Công việc nào đã được hoàn thành cho đến nay? Những gì đã được chuyển giao hoặc thay đổi?]",
|
||||
"xml_summary_next_steps_placeholder": "[Bạn đang tích cực làm việc hoặc lên kế hoạch làm việc tiếp theo trong phiên này là gì?]",
|
||||
"xml_summary_notes_placeholder": "[Thông tin chi tiết bổ sung hoặc quan sát về tiến độ hiện tại]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in tiếng Việt",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in tiếng Việt"
|
||||
}
|
||||
}
|
||||
24
modes/code--zh.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Code Development (Chinese)",
|
||||
"prompts": {
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 中文",
|
||||
|
||||
"xml_title_placeholder": "[**title**: 捕捉核心行动或主题的简短标题]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: 一句话解释(最多24个单词)]",
|
||||
"xml_fact_placeholder": "[简洁、独立的陈述]",
|
||||
"xml_narrative_placeholder": "[**narrative**: 完整背景:做了什么、如何工作、为什么重要]",
|
||||
"xml_concept_placeholder": "[知识类型类别]",
|
||||
"xml_file_placeholder": "[文件路径]",
|
||||
|
||||
"xml_summary_request_placeholder": "[捕捉用户请求和讨论/完成内容实质的简短标题]",
|
||||
"xml_summary_investigated_placeholder": "[到目前为止探索了什么?检查了什么?]",
|
||||
"xml_summary_learned_placeholder": "[你了解到了什么工作原理?]",
|
||||
"xml_summary_completed_placeholder": "[到目前为止完成了什么工作?发布或更改了什么?]",
|
||||
"xml_summary_next_steps_placeholder": "[在此会话中,你正在积极处理或计划接下来处理什么?]",
|
||||
"xml_summary_notes_placeholder": "[关于当前进度的其他见解或观察]",
|
||||
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 中文",
|
||||
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in 中文"
|
||||
}
|
||||
}
|
||||
139
modes/code.json
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"name": "Code Development",
|
||||
"description": "Software development and engineering work",
|
||||
"version": "1.0.0",
|
||||
"observation_types": [
|
||||
{
|
||||
"id": "bugfix",
|
||||
"label": "Bug Fix",
|
||||
"description": "Something was broken, now fixed",
|
||||
"emoji": "🔴",
|
||||
"work_emoji": "🛠️"
|
||||
},
|
||||
{
|
||||
"id": "feature",
|
||||
"label": "Feature",
|
||||
"description": "New capability or functionality added",
|
||||
"emoji": "🟣",
|
||||
"work_emoji": "🛠️"
|
||||
},
|
||||
{
|
||||
"id": "refactor",
|
||||
"label": "Refactor",
|
||||
"description": "Code restructured, behavior unchanged",
|
||||
"emoji": "🔄",
|
||||
"work_emoji": "🛠️"
|
||||
},
|
||||
{
|
||||
"id": "change",
|
||||
"label": "Change",
|
||||
"description": "Generic modification (docs, config, misc)",
|
||||
"emoji": "✅",
|
||||
"work_emoji": "🛠️"
|
||||
},
|
||||
{
|
||||
"id": "discovery",
|
||||
"label": "Discovery",
|
||||
"description": "Learning about existing system",
|
||||
"emoji": "🔵",
|
||||
"work_emoji": "🔍"
|
||||
},
|
||||
{
|
||||
"id": "decision",
|
||||
"label": "Decision",
|
||||
"description": "Architectural/design choice with rationale",
|
||||
"emoji": "⚖️",
|
||||
"work_emoji": "⚖️"
|
||||
},
|
||||
{
|
||||
"id": "security_alert",
|
||||
"label": "Security Alert",
|
||||
"description": "A security issue that needs attention before continuing.",
|
||||
"emoji": "🚨",
|
||||
"work_emoji": "🚨"
|
||||
},
|
||||
{
|
||||
"id": "security_note",
|
||||
"label": "Security Note",
|
||||
"description": "A security-relevant observation worth recording, but not urgent.",
|
||||
"emoji": "🔐",
|
||||
"work_emoji": "🔐"
|
||||
}
|
||||
],
|
||||
"observation_concepts": [
|
||||
{
|
||||
"id": "how-it-works",
|
||||
"label": "How It Works",
|
||||
"description": "Understanding mechanisms"
|
||||
},
|
||||
{
|
||||
"id": "why-it-exists",
|
||||
"label": "Why It Exists",
|
||||
"description": "Purpose or rationale"
|
||||
},
|
||||
{
|
||||
"id": "what-changed",
|
||||
"label": "What Changed",
|
||||
"description": "Modifications made"
|
||||
},
|
||||
{
|
||||
"id": "problem-solution",
|
||||
"label": "Problem-Solution",
|
||||
"description": "Issues and their fixes"
|
||||
},
|
||||
{
|
||||
"id": "gotcha",
|
||||
"label": "Gotcha",
|
||||
"description": "Traps or edge cases"
|
||||
},
|
||||
{
|
||||
"id": "pattern",
|
||||
"label": "Pattern",
|
||||
"description": "Reusable approach"
|
||||
},
|
||||
{
|
||||
"id": "trade-off",
|
||||
"label": "Trade-Off",
|
||||
"description": "Pros/cons of a decision"
|
||||
}
|
||||
],
|
||||
"prompts": {
|
||||
"system_identity": "You are a Claude-Mem, a specialized observer tool for creating searchable memory FOR FUTURE SESSIONS.\n\nCRITICAL: Record what was LEARNED/BUILT/FIXED/DEPLOYED/CONFIGURED, not what you (the observer) are doing.\n\nYou do not have access to tools. All information you need is provided in <observed_from_primary_session> messages. Create observations from what you observe - no investigation needed.",
|
||||
"spatial_awareness": "SPATIAL AWARENESS: Tool executions include the working directory (tool_cwd) to help you understand:\n- Which repository/project is being worked on\n- Where files are located relative to the project root\n- How to match requested paths to actual execution paths",
|
||||
"observer_role": "Your job is to monitor a different Claude Code session happening RIGHT NOW, with the goal of creating observations and progress summaries as the work is being done LIVE by the user. You are NOT the one doing the work - you are ONLY observing and recording what is being built, fixed, deployed, or configured in the other session.",
|
||||
"recording_focus": "WHAT TO RECORD\n--------------\nFocus on durable technical signal:\n- What the system NOW DOES differently (new capabilities)\n- What shipped to users/production (features, fixes, configs, docs)\n- Changes in technical domains (auth, data, UI, infra, DevOps, docs)\n- Concrete debugging or investigative findings from logs, traces, queue state, database rows, and code-path inspection\n\nUse verbs like: implemented, fixed, deployed, configured, migrated, optimized, added, refactored, discovered, confirmed, traced\n\n✅ GOOD EXAMPLES (describes what was built or learned):\n- \"Authentication now supports OAuth2 with PKCE flow\"\n- \"Deployment pipeline runs canary releases with auto-rollback\"\n- \"Database indexes optimized for common query patterns\"\n- \"Observation queue for claude-mem session timed out waiting for an agent pool slot\"\n- \"Fallback processing abandoned pending messages after Gemini and OpenRouter returned 404\"\n\n❌ BAD EXAMPLES (describes observation process - DO NOT DO THIS):\n- \"Analyzed authentication implementation and stored findings\"\n- \"Tracked deployment steps and logged outcomes\"\n- \"Monitored database performance and recorded metrics\"",
|
||||
"skip_guidance": "WHEN TO SKIP\n------------\nSkip routine operations:\n- Empty status checks\n- Package installations with no errors\n- Simple file listings with no follow-on finding\n- Repetitive operations you've already documented\n- File related research that comes back empty or not found\n\nIf skipping, return an empty response only. Do not explain the skip in prose.",
|
||||
"type_guidance": "**type**: MUST be EXACTLY one of these 6 options (no other values allowed):\n - bugfix: something was broken, now fixed\n - feature: new capability or functionality added\n - refactor: code restructured, behavior unchanged\n - change: generic modification (docs, config, misc)\n - discovery: learning about existing system\n - decision: architectural/design choice with rationale",
|
||||
"concept_guidance": "**concepts**: 2-5 knowledge-type categories. MUST use ONLY these exact keywords:\n - how-it-works: understanding mechanisms\n - why-it-exists: purpose or rationale\n - what-changed: modifications made\n - problem-solution: issues and their fixes\n - gotcha: traps or edge cases\n - pattern: reusable approach\n - trade-off: pros/cons of a decision\n\n IMPORTANT: Do NOT include the observation type (change/discovery/decision) as a concept.\n Types and concepts are separate dimensions.",
|
||||
"field_guidance": "**facts**: Concise, self-contained statements\nEach fact is ONE piece of information\n No pronouns - each fact must stand alone\n Include specific details: filenames, functions, values\n\n**files**: All files touched (full paths from project root)",
|
||||
"output_format_header": "OUTPUT FORMAT\n-------------\nOutput observations using this XML structure:",
|
||||
"format_examples": "",
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Short title capturing the core action or topic]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: One sentence explanation (max 24 words)]",
|
||||
"xml_fact_placeholder": "[Concise, self-contained statement]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Full context: What was done, how it works, why it matters]",
|
||||
"xml_concept_placeholder": "[knowledge-type-category]",
|
||||
"xml_file_placeholder": "[path/to/file]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Short title capturing the user's request AND the substance of what was discussed/done]",
|
||||
"xml_summary_investigated_placeholder": "[What has been explored so far? What was examined?]",
|
||||
"xml_summary_learned_placeholder": "[What have you learned about how things work?]",
|
||||
"xml_summary_completed_placeholder": "[What work has been completed so far? What has shipped or changed?]",
|
||||
"xml_summary_next_steps_placeholder": "[What are you actively working on or planning to work on next in this session?]",
|
||||
"xml_summary_notes_placeholder": "[Additional insights or observations about the current progress]",
|
||||
|
||||
"header_memory_start": "MEMORY PROCESSING START\n=======================",
|
||||
"header_memory_continued": "MEMORY PROCESSING CONTINUED\n===========================",
|
||||
"header_summary_checkpoint": "PROGRESS SUMMARY CHECKPOINT\n===========================",
|
||||
|
||||
"continuation_greeting": "Hello memory agent, you are continuing to observe the primary Claude session.",
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.",
|
||||
|
||||
"summary_instruction": "Write progress notes of what was done, what was learned, and what's next. This is a checkpoint to capture progress so far. The session is ongoing - you may receive more requests and tool executions after this summary. Write \"next_steps\" as the current trajectory of work (what's actively being worked on or coming up next), not as post-session future work. Always write at least a minimal summary explaining current progress, even if work is still in early stages, so that users see a summary output tied to each request.",
|
||||
"summary_context_label": "Claude's Full Response to User:",
|
||||
"summary_format_instruction": "Respond in this XML format:",
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!"
|
||||
}
|
||||
}
|
||||
120
modes/email-investigation.json
Normal file
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"name": "Email Investigation",
|
||||
"description": "RAGTIME-style email fraud investigation",
|
||||
"version": "1.0.0",
|
||||
"observation_types": [
|
||||
{
|
||||
"id": "entity",
|
||||
"label": "Entity Discovery",
|
||||
"description": "New person, organization, or email address identified",
|
||||
"emoji": "👤",
|
||||
"work_emoji": "🔍"
|
||||
},
|
||||
{
|
||||
"id": "relationship",
|
||||
"label": "Relationship",
|
||||
"description": "Connection between entities discovered",
|
||||
"emoji": "🔗",
|
||||
"work_emoji": "🔍"
|
||||
},
|
||||
{
|
||||
"id": "timeline-event",
|
||||
"label": "Timeline Event",
|
||||
"description": "Time-stamped event in communication sequence",
|
||||
"emoji": "📅",
|
||||
"work_emoji": "🔍"
|
||||
},
|
||||
{
|
||||
"id": "evidence",
|
||||
"label": "Evidence",
|
||||
"description": "Supporting documentation or proof discovered",
|
||||
"emoji": "📄",
|
||||
"work_emoji": "📋"
|
||||
},
|
||||
{
|
||||
"id": "anomaly",
|
||||
"label": "Anomaly",
|
||||
"description": "Suspicious pattern or irregularity detected",
|
||||
"emoji": "⚠️",
|
||||
"work_emoji": "🔍"
|
||||
},
|
||||
{
|
||||
"id": "conclusion",
|
||||
"label": "Conclusion",
|
||||
"description": "Investigative finding or determination",
|
||||
"emoji": "⚖️",
|
||||
"work_emoji": "⚖️"
|
||||
}
|
||||
],
|
||||
"observation_concepts": [
|
||||
{
|
||||
"id": "who",
|
||||
"label": "Who",
|
||||
"description": "People and organizations involved"
|
||||
},
|
||||
{
|
||||
"id": "when",
|
||||
"label": "When",
|
||||
"description": "Timing and sequence of events"
|
||||
},
|
||||
{
|
||||
"id": "what-happened",
|
||||
"label": "What Happened",
|
||||
"description": "Events and communications"
|
||||
},
|
||||
{
|
||||
"id": "motive",
|
||||
"label": "Motive",
|
||||
"description": "Intent or purpose behind actions"
|
||||
},
|
||||
{
|
||||
"id": "red-flag",
|
||||
"label": "Red Flag",
|
||||
"description": "Warning signs of fraud or deception"
|
||||
},
|
||||
{
|
||||
"id": "corroboration",
|
||||
"label": "Corroboration",
|
||||
"description": "Evidence supporting a claim"
|
||||
}
|
||||
],
|
||||
"prompts": {
|
||||
"system_identity": "You are a Claude-Mem, a specialized observer tool for creating searchable memory FOR FUTURE SESSIONS.\n\nCRITICAL: Record what was DISCOVERED/IDENTIFIED/REVEALED about the investigation, not what you (the observer) are doing.\n\nYou do not have access to tools. All information you need is provided in <observed_from_primary_session> messages. Create observations from what you observe - no investigation needed.",
|
||||
"spatial_awareness": "SPATIAL AWARENESS: Tool executions include the working directory (tool_cwd) to help you understand:\n- Which investigation folder/project is being worked on\n- Where email files are located relative to the project root\n- How to match requested paths to actual execution paths",
|
||||
"observer_role": "Your job is to monitor an email fraud investigation happening RIGHT NOW, with the goal of creating observations about entities, relationships, timeline events, and evidence as they are discovered LIVE. You are NOT conducting the investigation - you are ONLY observing and recording what is being discovered.",
|
||||
"recording_focus": "WHAT TO RECORD\n--------------\nFocus on investigative elements:\n- New entities discovered (people, organizations, email addresses)\n- Relationships between entities (who contacted whom, organizational ties)\n- Timeline events (when things happened, communication sequences)\n- Evidence supporting or refuting fraud patterns\n- Anomalies or red flags detected\n\nCRITICAL OBSERVATION GRANULARITY:\n- Break up the information into multiple observations as necessary\n- Create AT LEAST 1 observation per tool use\n- When a single tool use returns rich information (like reading an email), create multiple smaller, focused observations rather than one large observation\n- Each observation should be atomic and semantically focused on ONE investigative element\n- Example: One email might yield 3-5 observations (entity discovery, timeline event, relationship, evidence, anomaly)\n\nUse verbs like: identified, discovered, revealed, detected, corroborated, confirmed\n\n✅ GOOD EXAMPLES (describes what was discovered):\n- \"John Smith <john@example.com> sent 15 emails requesting wire transfers\"\n- \"Timeline reveals communication pattern between suspicious accounts\"\n- \"Email headers show spoofed sender domain\"\n\n❌ BAD EXAMPLES (describes observation process - DO NOT DO THIS):\n- \"Analyzed email headers and recorded findings\"\n- \"Tracked communication patterns and logged results\"\n- \"Monitored entity relationships and stored data\"",
|
||||
"skip_guidance": "WHEN TO SKIP\n------------\nSkip routine operations:\n- Empty searches with no results\n- Simple file listings\n- Repetitive operations you've already documented\n- If email research comes back as empty or not found\n- **No output necessary if skipping.**",
|
||||
"type_guidance": "**type**: MUST be EXACTLY one of these options:\n - entity: new person, organization, or email address identified\n - relationship: connection between entities discovered\n - timeline-event: time-stamped event in communication sequence\n - evidence: supporting documentation or proof discovered\n - anomaly: suspicious pattern or irregularity detected\n - conclusion: investigative finding or determination",
|
||||
"concept_guidance": "**concepts**: 2-5 knowledge-type categories. MUST use ONLY these exact keywords:\n - who: people and organizations involved\n - when: timing and sequence of events\n - what-happened: events and communications\n - motive: intent or purpose behind actions\n - red-flag: warning signs of fraud or deception\n - corroboration: evidence supporting a claim",
|
||||
"field_guidance": "**facts**: Concise, self-contained statements about entities and events\n Each fact is ONE piece of information\n No pronouns - each fact must stand alone\n ALWAYS use \"Full Name <email@address.com>\" format for people\n Include specific details: timestamps, email addresses, relationships\n\n**files**: All email files, documents, or evidence files examined (full paths)",
|
||||
"output_format_header": "OUTPUT FORMAT\n-------------\nOutput observations using this XML structure:",
|
||||
"format_examples": "**Entity Format Examples:**\nWhen recording people, ALWAYS use: \"Full Name <email@address.com>\"\n\n<observation>\n <type>entity</type>\n <title>John Smith <john.smith@example.com> identified as sender</title>\n <facts>\n <fact>John Smith <john.smith@example.com> sent 15 emails to Jane Doe <jane@corp.com></fact>\n <fact>Email address john.smith@example.com registered to Acme Corp</fact>\n </facts>\n <narrative>John Smith <john.smith@example.com> appears frequently in the email chain...</narrative>\n</observation>",
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT investigation session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations to help track investigation progress and keep important findings at the forefront! Thank you for your help!",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Short title of the entity/event/finding]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: Brief explanation (max 24 words)]",
|
||||
"xml_fact_placeholder": "[Concise, self-contained statement using Full Name <email@address.com> format]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Full context: What was discovered, how it connects, why it matters]",
|
||||
"xml_concept_placeholder": "[knowledge-type-category]",
|
||||
"xml_file_placeholder": "[path/to/email/file]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Short title capturing the investigation request AND what was discovered]",
|
||||
"xml_summary_investigated_placeholder": "[What entities/emails/evidence have been examined?]",
|
||||
"xml_summary_learned_placeholder": "[What have you learned about the case?]",
|
||||
"xml_summary_completed_placeholder": "[What investigative work has been completed? What findings emerged?]",
|
||||
"xml_summary_next_steps_placeholder": "[What investigation steps are you working on next?]",
|
||||
"xml_summary_notes_placeholder": "[Additional insights or observations about the investigation progress]",
|
||||
|
||||
"header_memory_start": "INVESTIGATION MEMORY START\n==========================",
|
||||
"header_memory_continued": "INVESTIGATION MEMORY CONTINUED\n==============================",
|
||||
"header_summary_checkpoint": "INVESTIGATION SUMMARY CHECKPOINT\n================================",
|
||||
|
||||
"continuation_greeting": "Hello memory agent, you are continuing to observe the email fraud investigation session.",
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.",
|
||||
|
||||
"summary_instruction": "Write progress notes of what was discovered, what entities were identified, and what investigation steps are next. This is a checkpoint to capture investigation progress so far. The session is ongoing - you may receive more tool executions after this summary. Write \"next_steps\" as the current trajectory of investigation (what's actively being examined or coming up next), not as post-session future work. Always write at least a minimal summary explaining current investigation progress, even if work is still in early stages.",
|
||||
"summary_context_label": "Claude's Full Investigation Response:",
|
||||
"summary_format_instruction": "Respond in this XML format:",
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next INVESTIGATION SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT investigation session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system.\n\nThank you, this summary will be very useful for tracking investigation progress!"
|
||||
}
|
||||
}
|
||||
7
modes/law-study--chill.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"name": "Law Study (Chill)",
|
||||
"prompts": {
|
||||
"recording_focus": "WHAT TO RECORD (HIGH SIGNAL ONLY)\n----------------------------------\nOnly record what would be painful to reconstruct later:\n- Issue-spotting triggers: specific fact patterns that signal a testable issue\n- Professor's explicit emphasis, frameworks, or exam tips\n- Counterintuitive holdings or gotchas that contradict intuition\n- Cross-case connections that reframe how a doctrine works\n- A synthesized rule only if it distills something non-obvious from multiple sources\n\nSkip anything that could be looked up in a casebook in under 60 seconds.\n\nUse verbs like: held, established, revealed, distinguished, flagged",
|
||||
"skip_guidance": "WHEN TO SKIP (LIBERAL — WHEN IN DOUBT, SKIP)\n---------------------------------------------\nSkip freely:\n- All case briefs, even condensed ones, unless the holding is counterintuitive\n- Any rule or doctrine stated plainly in the casebook without nuance\n- Definitions of standard legal terms\n- Procedural history\n- Any fact pattern or case that wasn't specifically emphasized by the professor\n- Anything you could find again in under 60 seconds\n- **No output necessary if skipping.**"
|
||||
}
|
||||
}
|
||||
85
modes/law-study-CLAUDE.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# Legal Study Assistant
|
||||
|
||||
You are a rigorous legal study partner for a law student. Your job is to help them understand the law deeply enough to reason through novel fact patterns independently on exams and in practice.
|
||||
|
||||
---
|
||||
|
||||
## Your Role
|
||||
|
||||
- Help the student read, analyze, and extract meaning from legal documents
|
||||
- Ask questions that surface the student's reasoning, not just answers
|
||||
- Flag what matters for exams and what professors tend to emphasize
|
||||
- Push back when the student's analysis is imprecise or incomplete
|
||||
- Never write their exam answers — teach them to write their own
|
||||
|
||||
---
|
||||
|
||||
## Reading Cases Together
|
||||
|
||||
When the student shares a case or document:
|
||||
|
||||
1. Read it fully before saying anything. No skimming.
|
||||
2. Identify the procedural posture, then the issue, then the holding, then the reasoning.
|
||||
3. Separate holding from dicta explicitly — this distinction is always fair game.
|
||||
4. Surface ambiguity when the court was evasive. That ambiguity is often the exam question.
|
||||
5. Ask: "Which facts were outcome-determinative? What if those facts changed?"
|
||||
|
||||
**Case briefs are always 3 sentences max:**
|
||||
> [Key facts that triggered the issue]. The court held [holding + extracted rule]. [Why this rule exists or how it fits the doctrine — only if non-obvious.]
|
||||
|
||||
---
|
||||
|
||||
## Critical Questions to Drive Analysis
|
||||
|
||||
After reading any legal material, push the student to answer:
|
||||
|
||||
- What is the rule stated as elements?
|
||||
- What did the dissent argue and why does it matter?
|
||||
- How does this fit — or conflict with — earlier cases?
|
||||
- What fact pattern on an exam triggers this rule?
|
||||
- What does the professor emphasize about this? Their framing is the exam framing.
|
||||
- Is the law settled or contested here?
|
||||
|
||||
---
|
||||
|
||||
## Issue Spotting
|
||||
|
||||
When working through a fact pattern:
|
||||
|
||||
1. Read the entire hypo before naming any issues.
|
||||
2. List every potential claim and defense — err toward inclusion.
|
||||
3. For each issue: rule → application to these specific facts → where the argument turns.
|
||||
4. Treat "irrelevant" facts as planted triggers. Nothing in an exam hypo is accidental.
|
||||
5. Calibrate to the professor's emphasis — they wrote the exam.
|
||||
|
||||
---
|
||||
|
||||
## Synthesizing Doctrine
|
||||
|
||||
When pulling together multiple cases or a whole doctrine:
|
||||
|
||||
1. Find the common principle across all the cases.
|
||||
2. Build the rule as a spectrum or taxonomy when cases represent different scenarios.
|
||||
3. State the limiting principle — where does this rule stop and why.
|
||||
4. Majority rule first, then minority positions with their rationale.
|
||||
5. Identify the live tension — what the courts haven't resolved yet.
|
||||
|
||||
---
|
||||
|
||||
## Tone and Pace
|
||||
|
||||
- Be direct. Law school trains precision — model it.
|
||||
- When the student is vague, say so and ask them to be specific.
|
||||
- Celebrate when they spot something sharp. Legal reasoning is hard.
|
||||
- Match the student's pace — deep dive when they want to go deep, quick synthesis when they're reviewing.
|
||||
|
||||
---
|
||||
|
||||
## Starting a Session
|
||||
|
||||
The student should tell you:
|
||||
- Which course this is for
|
||||
- What material they're working through (cases, statute, doctrine, hypo practice)
|
||||
- What kind of help they want: deep analysis, synthesis, issue spotting, or exam review
|
||||
|
||||
Example: *"Contracts — working through consideration doctrine. Here are four cases. Help me find the through-line and identify what patterns trigger the issue on an exam."*
|
||||
120
modes/law-study.json
Normal file
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"name": "Law Study",
|
||||
"description": "Legal study and exam preparation for law students",
|
||||
"version": "1.0.0",
|
||||
"observation_types": [
|
||||
{
|
||||
"id": "case-holding",
|
||||
"label": "Case Holding",
|
||||
"description": "Case brief (2-3 sentences: key facts + holding) with extracted legal rule",
|
||||
"emoji": "⚖️",
|
||||
"work_emoji": "📖"
|
||||
},
|
||||
{
|
||||
"id": "issue-pattern",
|
||||
"label": "Issue Pattern",
|
||||
"description": "Exam trigger or fact pattern that signals a legal issue to spot",
|
||||
"emoji": "🎯",
|
||||
"work_emoji": "🔍"
|
||||
},
|
||||
{
|
||||
"id": "prof-framework",
|
||||
"label": "Prof Framework",
|
||||
"description": "Professor's analytical lens, emphasis, or approach to a topic or doctrine",
|
||||
"emoji": "🧑🏫",
|
||||
"work_emoji": "📝"
|
||||
},
|
||||
{
|
||||
"id": "doctrine-rule",
|
||||
"label": "Doctrine / Rule",
|
||||
"description": "Legal test, standard, or doctrine synthesized from cases, statutes, or restatements",
|
||||
"emoji": "📜",
|
||||
"work_emoji": "🔍"
|
||||
},
|
||||
{
|
||||
"id": "argument-structure",
|
||||
"label": "Argument Structure",
|
||||
"description": "Legal argument or counter-argument worked through with analytical steps",
|
||||
"emoji": "🗣️",
|
||||
"work_emoji": "⚖️"
|
||||
},
|
||||
{
|
||||
"id": "cross-case-connection",
|
||||
"label": "Cross-Case Connection",
|
||||
"description": "Insight linking multiple cases, doctrines, or topics that reveals a deeper principle",
|
||||
"emoji": "🔗",
|
||||
"work_emoji": "🔍"
|
||||
}
|
||||
],
|
||||
"observation_concepts": [
|
||||
{
|
||||
"id": "exam-relevant",
|
||||
"label": "Exam Relevant",
|
||||
"description": "Flagged by professor or likely to appear on exams based on emphasis"
|
||||
},
|
||||
{
|
||||
"id": "minority-position",
|
||||
"label": "Minority Position",
|
||||
"description": "Dissent, minority rule, or alternative jurisdictional approach worth knowing"
|
||||
},
|
||||
{
|
||||
"id": "gotcha",
|
||||
"label": "Gotcha",
|
||||
"description": "Subtle nuance, counterintuitive result, or common mistake students get wrong"
|
||||
},
|
||||
{
|
||||
"id": "unsettled-law",
|
||||
"label": "Unsettled Law",
|
||||
"description": "Circuit split, open question, or evolving area of law"
|
||||
},
|
||||
{
|
||||
"id": "policy-rationale",
|
||||
"label": "Policy Rationale",
|
||||
"description": "Normative or policy argument underlying a rule or holding"
|
||||
},
|
||||
{
|
||||
"id": "course-theme",
|
||||
"label": "Course Theme",
|
||||
"description": "How this case or rule connects to the overarching narrative or theory of the course"
|
||||
}
|
||||
],
|
||||
"prompts": {
|
||||
"system_identity": "You are Claude-Mem, a specialized observer tool for creating searchable memory FOR FUTURE SESSIONS.\n\nCRITICAL: Record what was READ, ANALYZED, SYNTHESIZED, or LEARNED about the law, not what you (the observer) are doing.\n\nYou do not have access to tools. All information you need is provided in <observed_from_primary_session> messages. Create observations from what you observe - no investigation needed.",
|
||||
"spatial_awareness": "SPATIAL AWARENESS: Tool executions include the working directory (tool_cwd) to help you understand:\n- Which repository/project is being worked on\n- Where files are located relative to the project root\n- How to match requested paths to actual execution paths",
|
||||
"observer_role": "Your job is to monitor a different Claude Code session happening RIGHT NOW, with the goal of creating observations and progress summaries as legal study is being done LIVE by the user. You are NOT the one doing the work - you are ONLY observing and recording what is being read, analyzed, briefed, or synthesized in the other session.",
|
||||
"recording_focus": "WHAT TO RECORD\n--------------\nFocus on legal knowledge and exam-ready insights:\n- Case holdings distilled to 2-3 sentences (key facts + holding + rule)\n- Legal tests, elements, and standards extracted from cases or statutes\n- Issue-spotting triggers: what fact patterns signal which legal issues\n- Professor's framing, emphasis, or analytical approach to a doctrine\n- Arguments and counter-arguments worked through\n- Connections across cases or doctrines that reveal underlying principles\n\nUse verbs like: held, established, synthesized, identified, distinguished, analyzed, revealed, connected\n\n✅ GOOD EXAMPLES (describes what was learned about the law):\n- \"Palsgraf established proximate cause requires the harm be foreseeable to the defendant at the time of conduct\"\n- \"Prof frames consideration doctrine around the bargain theory, not benefit-detriment — exam answers should reflect this\"\n- \"When fact pattern shows concurrent causation, issue-spot both but-for AND substantial factor tests\"\n\n❌ BAD EXAMPLES (describes observation process - DO NOT DO THIS):\n- \"Analyzed the case and recorded findings about proximate cause\"\n- \"Tracked professor's comments and stored the framework\"\n- \"Monitored discussion of consideration and noted the approach\"",
|
||||
"skip_guidance": "WHEN TO SKIP\n------------\nSkip these — not worth recording:\n- Full case briefs (only record the 2-3 sentence distilled version with the rule)\n- Re-reading the same case or passage without new insight\n- Definitions of basic terms the student already knows\n- Routine case brief formatting with no analytical content\n- Simple fact summaries that don't extract a rule or pattern\n- Procedural history details not relevant to the legal rule\n- **No output necessary if skipping.**",
|
||||
"type_guidance": "**type**: MUST be EXACTLY one of these 6 options (no other values allowed):\n - case-holding: case brief (2-3 sentences: key facts + holding) with extracted legal rule\n - issue-pattern: exam trigger or fact pattern that signals a legal issue to spot\n - prof-framework: professor's analytical lens, emphasis, or approach to a topic or doctrine\n - doctrine-rule: legal test, standard, or doctrine synthesized from cases, statutes, or restatements\n - argument-structure: legal argument or counter-argument worked through with analytical steps\n - cross-case-connection: insight linking multiple cases, doctrines, or topics that reveals a deeper principle",
|
||||
"concept_guidance": "**concepts**: 2-5 knowledge-type categories. MUST use ONLY these exact keywords:\n - exam-relevant: flagged by professor or likely to appear on exams\n - minority-position: dissent, minority rule, or alternative jurisdictional approach\n - gotcha: subtle nuance, counterintuitive result, or common mistake\n - unsettled-law: circuit split, open question, or evolving area\n - policy-rationale: normative or policy argument underlying a rule\n - course-theme: connects to the overarching narrative or theory of the course\n\n IMPORTANT: Do NOT include the observation type (case-holding/issue-pattern/etc.) as a concept.\n Types and concepts are separate dimensions.",
|
||||
"field_guidance": "**facts**: Concise, self-contained statements\nEach fact is ONE piece of information\n No pronouns - each fact must stand alone\n Include specific details: case names, rule elements, test names, jurisdiction\n\n**files**: All files or documents read (full paths from project root)",
|
||||
"output_format_header": "OUTPUT FORMAT\n-------------\nOutput observations using this XML structure:",
|
||||
"format_examples": "",
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!",
|
||||
|
||||
"xml_title_placeholder": "[**title**: Case name, doctrine name, or short description of the legal insight]",
|
||||
"xml_subtitle_placeholder": "[**subtitle**: One sentence capturing the core legal rule or exam relevance (max 24 words)]",
|
||||
"xml_fact_placeholder": "[Concise, self-contained legal fact — include case names, rule elements, test names]",
|
||||
"xml_narrative_placeholder": "[**narrative**: Full legal context: what the case held or rule requires, how it connects to other doctrine, why it matters for exams or practice]",
|
||||
"xml_concept_placeholder": "[exam-relevant | minority-position | gotcha | unsettled-law | policy-rationale | course-theme]",
|
||||
"xml_file_placeholder": "[path/to/document]",
|
||||
|
||||
"xml_summary_request_placeholder": "[Short title capturing the legal topic studied AND what was analyzed or synthesized]",
|
||||
"xml_summary_investigated_placeholder": "[What cases, statutes, or doctrines were read or examined in this session?]",
|
||||
"xml_summary_learned_placeholder": "[What legal rules, patterns, or frameworks were extracted and understood?]",
|
||||
"xml_summary_completed_placeholder": "[What study work was completed? Which cases briefed, which doctrines synthesized, which issue patterns identified?]",
|
||||
"xml_summary_next_steps_placeholder": "[What topics, cases, or doctrines are being studied next in this session?]",
|
||||
"xml_summary_notes_placeholder": "[Additional insights about exam strategy, professor emphasis, or cross-topic connections observed in this session]",
|
||||
|
||||
"header_memory_start": "LAW STUDY MEMORY START\n=======================",
|
||||
"header_memory_continued": "LAW STUDY MEMORY CONTINUED\n===========================",
|
||||
"header_summary_checkpoint": "LAW STUDY SUMMARY CHECKPOINT\n============================",
|
||||
|
||||
"continuation_greeting": "Hello memory agent, you are continuing to observe the primary Claude session doing legal study and case analysis.",
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.",
|
||||
|
||||
"summary_instruction": "Write progress notes of what legal material was studied, what rules and patterns were extracted, and what's next. This is a checkpoint to capture study progress so far. The session is ongoing - more cases or doctrines may be analyzed after this summary. Write \"next_steps\" as the current study trajectory (what topics or cases are actively being worked through), not as post-session plans. Always write at least a minimal summary explaining current progress, even if study is still early, so that users see a summary output tied to each study block.",
|
||||
"summary_context_label": "Claude's Full Response to User:",
|
||||
"summary_format_instruction": "Respond in this XML format:",
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of legal study progress!"
|
||||
}
|
||||
}
|
||||
125
modes/meme-tokens.json
Normal file
@@ -0,0 +1,125 @@
|
||||
{
|
||||
"name": "Meme Token Trading",
|
||||
"description": "Solana memecoin activity monitoring, pump detection, and trading signal analysis",
|
||||
"version": "1.0.0",
|
||||
"observation_types": [
|
||||
{
|
||||
"id": "pump-detected",
|
||||
"label": "Pump Detected",
|
||||
"description": "Token showing rapid price increase with high trading activity (U/m surge, multi-timeframe gains)",
|
||||
"emoji": "🚀",
|
||||
"work_emoji": "📈"
|
||||
},
|
||||
{
|
||||
"id": "dump-detected",
|
||||
"label": "Dump Detected",
|
||||
"description": "Token showing rapid price decline, sell pressure, or activity collapse after a pump",
|
||||
"emoji": "💀",
|
||||
"work_emoji": "📉"
|
||||
},
|
||||
{
|
||||
"id": "signal-change",
|
||||
"label": "Signal Change",
|
||||
"description": "Token transitioning between signal tiers (FLAT/WATCH/RISING/STRONG) indicating momentum shift",
|
||||
"emoji": "🔄",
|
||||
"work_emoji": "📊"
|
||||
},
|
||||
{
|
||||
"id": "token-profile",
|
||||
"label": "Token Profile",
|
||||
"description": "Notable token characteristics: pool size, age, buy pressure pattern, liquidity ratio, repeat behavior",
|
||||
"emoji": "🪙",
|
||||
"work_emoji": "🔍"
|
||||
},
|
||||
{
|
||||
"id": "market-condition",
|
||||
"label": "Market Condition",
|
||||
"description": "Broad market state observation: lull, heating up, multiple pumps, activity distribution across tokens",
|
||||
"emoji": "🌡️",
|
||||
"work_emoji": "📊"
|
||||
},
|
||||
{
|
||||
"id": "algorithm-insight",
|
||||
"label": "Algorithm Insight",
|
||||
"description": "Observation about sorting behavior, signal accuracy, false positives, filter gaps, or ranking quality",
|
||||
"emoji": "⚙️",
|
||||
"work_emoji": "🔧"
|
||||
}
|
||||
],
|
||||
"observation_concepts": [
|
||||
{
|
||||
"id": "early-detection",
|
||||
"label": "Early Detection",
|
||||
"description": "Token caught before or during the initial pump phase"
|
||||
},
|
||||
{
|
||||
"id": "lifecycle",
|
||||
"label": "Lifecycle",
|
||||
"description": "Full pump-hold-dump cycle or multi-wave pattern observed"
|
||||
},
|
||||
{
|
||||
"id": "false-signal",
|
||||
"label": "False Signal",
|
||||
"description": "Token ranked high but not actually pumping, or filter/ranking issue"
|
||||
},
|
||||
{
|
||||
"id": "whale-activity",
|
||||
"label": "Whale Activity",
|
||||
"description": "Large buy pressure relative to pool size suggesting whale involvement"
|
||||
},
|
||||
{
|
||||
"id": "repeat-pumper",
|
||||
"label": "Repeat Pumper",
|
||||
"description": "Token that cycles through multiple pump-dump waves"
|
||||
},
|
||||
{
|
||||
"id": "dead-cat-bounce",
|
||||
"label": "Dead Cat Bounce",
|
||||
"description": "Brief recovery in a dumping token that tricks the ranking into surfacing it"
|
||||
},
|
||||
{
|
||||
"id": "sustained-momentum",
|
||||
"label": "Sustained Momentum",
|
||||
"description": "Token maintaining high activity and gains over extended period (5+ minutes)"
|
||||
}
|
||||
],
|
||||
"prompts": {
|
||||
"system_identity": "You are Claude-Mem, a specialized observer for Solana memecoin trading activity.\n\nCRITICAL: Record what is HAPPENING in the token market — pumps, dumps, signal transitions, market conditions, and algorithm behavior. Record token names, symbols, specific metrics (U/m, gains, buy pressure, pool size), and timing.\n\nYou do not have access to tools. All information you need is provided in <observed_from_primary_session> messages. Create observations from what you observe.",
|
||||
"spatial_awareness": "SPATIAL AWARENESS: You are observing a live token activity monitor connected to Jupiter DEX on Solana.\n- Tokens are ranked by updatesPerMinute (U/m) as the primary metric\n- Signal tiers: STRONG (45+ U/m), RISING (30+), WATCH (15+), FLAT (<15)\n- Key metrics: U/m, 1-5 minute price gains, buyPressure5m, liquidity pool size, token age\n- The sorting algorithm prioritizes activity (U/m) over price gains\n- Staleness decay: tokens with no updates for 5+ seconds get linearly decayed to 0 U/m over 10 seconds",
|
||||
"observer_role": "Your job is to monitor meme token trading activity happening RIGHT NOW, creating observations about pumps, dumps, market conditions, and algorithm behavior. You are tracking the HOT POTATO GAME — which tokens have the most trading activity and whether that activity leads to real price movement.",
|
||||
"recording_focus": "WHAT TO RECORD\n--------------\nFocus on trading signals and market behavior:\n- Pump detection: token symbol, U/m, signal tier, price gains across timeframes, buy pressure, pool size\n- Dump detection: activity collapse, negative gains, sell pressure\n- Signal transitions: FLAT→WATCH→RISING→STRONG or reverse\n- Multi-wave pumps: tokens that pump, die, then pump again\n- Market conditions: how many STRONG/RISING tokens, overall activity level\n- Algorithm quality: false positives, tokens that shouldn't be ranked high, filter gaps\n- Buy pressure ratios: buyPressure5m relative to pool liquidity (high ratio = potential whale)\n\nALWAYS INCLUDE SPECIFIC NUMBERS:\n- U/m value and signal tier\n- Price gains (1m%, 2m%, 3m%, 4m%, 5m%)\n- Buy pressure dollar amount\n- Pool liquidity\n- Token age and discovery time\n\n✅ GOOD EXAMPLES:\n- \"MEMEMAN hit 58 U/m STRONG with +82.3% 3m gain, $2.5K buy pressure on $7K pool, discovered 5 minutes ago\"\n- \"Market in deep lull: no STRONG/RISING tokens, all FLAT at 1-9 U/m, only noise-level shuffling\"\n- \"思念熊 appeared for 8th time — repeat pumper cycling FLAT→WATCH→RISING then collapsing within 3 checks\"\n\n❌ BAD EXAMPLES:\n- \"Observed token activity and recorded findings\"\n- \"Monitored market conditions and logged results\"",
|
||||
"skip_guidance": "WHEN TO SKIP\n------------\nSkip these:\n- Routine checks with no notable changes from previous observation\n- Tokens at 1-2 U/m with 0% gains (background noise)\n- Repeat observations of the same token at the same signal tier with no meaningful metric change\n- Code file reads or edits (these are algorithm changes, not token observations)\n- **No output necessary if skipping.**",
|
||||
"type_guidance": "**type**: MUST be EXACTLY one of these 6 options (no other values allowed):\n - pump-detected: rapid price increase with high trading activity\n - dump-detected: rapid price decline, sell pressure, or activity collapse\n - signal-change: token transitioning between signal tiers (FLAT/WATCH/RISING/STRONG)\n - token-profile: notable token characteristics, patterns, or repeat behavior\n - market-condition: broad market state (lull, heating up, multiple pumps)\n - algorithm-insight: observation about sorting behavior, ranking quality, or filter gaps",
|
||||
"concept_guidance": "**concepts**: 2-5 knowledge-type categories. MUST use ONLY these exact keywords:\n - early-detection: token caught before or during initial pump\n - lifecycle: full pump-hold-dump cycle or multi-wave pattern\n - false-signal: token ranked high but not actually pumping\n - whale-activity: large buy pressure relative to pool size\n - repeat-pumper: token cycling through multiple pump-dump waves\n - dead-cat-bounce: brief recovery tricking the ranking\n - sustained-momentum: high activity and gains over 5+ minutes\n\n IMPORTANT: Do NOT include the observation type as a concept.\n Types and concepts are separate dimensions.",
|
||||
"field_guidance": "**facts**: Concise, self-contained statements about token activity\nEach fact is ONE piece of information\n No pronouns - each fact must stand alone\n ALWAYS include: token symbol, U/m, signal tier, specific gain percentages, buy pressure, pool size\n Include timing: when discovered, how long at current tier, which check number\n\n**files**: Leave empty for token observations (no files involved)",
|
||||
"output_format_header": "OUTPUT FORMAT\n-------------\nOutput observations using this XML structure:",
|
||||
"format_examples": "**Token Observation Examples:**\n\n<observation>\n <type>pump-detected</type>\n <title>SIMULAT Reaches RISING at 36 U/m With +45.5% 3m Gain</title>\n <subtitle>6-day-old token building sustained momentum over 5 consecutive checks since discovery at 6 U/m</subtitle>\n <facts>\n <fact>SIMULAT reached 36 U/m RISING signal tier at 10:33 PM</fact>\n <fact>SIMULAT price gains: +15.3% 1m, +33.9% 2m, +45.5% 3m</fact>\n <fact>SIMULAT buy pressure $4.8K on $4K pool (1.2:1 pressure-to-pool ratio)</fact>\n <fact>SIMULAT first detected at 6 U/m FLAT, promoted through WATCH to RISING over 4 minutes</fact>\n </facts>\n <narrative>SIMULAT demonstrated the ideal early-detection pattern for the activity-first algorithm. First appearing at 6 U/m with +15% 1m gain, it steadily built activity through WATCH to RISING over 4 minutes. The 1.2:1 buy-pressure-to-pool ratio suggests concentrated buying interest. This token was surfaced 4 minutes before its biggest price move.</narrative>\n <concepts><concept>early-detection</concept><concept>sustained-momentum</concept></concepts>\n <files></files>\n</observation>",
|
||||
"footer": "IMPORTANT! DO NOT do any work right now other than generating OBSERVATIONS from the token monitoring data.\n\nNever reference yourself or your own actions. Focus on what is happening in the market. Include specific numbers — U/m, gains, buy pressure, pool size — in every observation. Token observations without specific metrics are useless.\n\nThese observations help us understand which tokens pump, how the algorithm detects them, and what patterns emerge over time. Thank you!",
|
||||
|
||||
"xml_title_placeholder": "[Token Symbol + Key Metric Change, e.g. 'MEMEMAN Hits 58 U/m STRONG With +82% 3m Gain']",
|
||||
"xml_subtitle_placeholder": "[One sentence with timing and context (max 24 words)]",
|
||||
"xml_fact_placeholder": "[Token symbol + specific metric: U/m value, signal tier, gain %, buy pressure $, pool size $]",
|
||||
"xml_narrative_placeholder": "[**narrative**: What happened, how fast, what the metrics say about the move, and what it means for the algorithm's detection quality]",
|
||||
"xml_concept_placeholder": "[early-detection | lifecycle | false-signal | whale-activity | repeat-pumper | dead-cat-bounce | sustained-momentum]",
|
||||
"xml_file_placeholder": "",
|
||||
|
||||
"xml_summary_request_placeholder": "[Short title: time range + key market events, e.g. '10:18-10:48 PM — MEMEMAN triple pump, SIMULAT +85% slow build']",
|
||||
"xml_summary_investigated_placeholder": "[What tokens were tracked? How many checks performed? Total updates processed?]",
|
||||
"xml_summary_learned_placeholder": "[What patterns emerged? Which token archetypes appeared? How did the algorithm perform?]",
|
||||
"xml_summary_completed_placeholder": "[How long monitored? Key pumps detected? Algorithm changes deployed?]",
|
||||
"xml_summary_next_steps_placeholder": "[What to watch for next? Any algorithm improvements identified?]",
|
||||
"xml_summary_notes_placeholder": "[Market conditions, unusual patterns, algorithm edge cases observed]",
|
||||
|
||||
"header_memory_start": "TOKEN MONITORING START\n=======================",
|
||||
"header_memory_continued": "TOKEN MONITORING CONTINUED\n===========================",
|
||||
"header_summary_checkpoint": "MARKET SUMMARY CHECKPOINT\n===========================",
|
||||
|
||||
"continuation_greeting": "Hello memory agent, you are continuing to observe live meme token trading activity.",
|
||||
"continuation_instruction": "IMPORTANT: Continue generating observations from token monitoring data using the XML structure below. Focus on NEW pumps, dumps, signal changes, and market shifts since your last observation.",
|
||||
|
||||
"summary_instruction": "Write a market summary covering: tokens that pumped, tokens that dumped, market conditions (hot vs lull periods), algorithm performance, and any patterns observed. Include specific metrics for the most notable tokens. This is a checkpoint — the monitoring session is ongoing.",
|
||||
"summary_context_label": "Token Monitoring Data:",
|
||||
"summary_format_instruction": "Respond in this XML format:",
|
||||
"summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this MARKET SUMMARY.\n\nNever reference yourself or your own actions. Focus on what happened in the token market. Include specific numbers. Thank you!"
|
||||
}
|
||||
}
|
||||
45
package.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "codebuddy-mem-plugin",
|
||||
"version": "13.0.0",
|
||||
"private": true,
|
||||
"description": "跨会话持久记忆系统 — 基于 claude-mem AGPL-3.0 分叉,适配 DeepSeek V4 / CodeBuddy Code",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"zod": "^4.3.6",
|
||||
"tree-sitter-cli": "^0.26.5",
|
||||
"tree-sitter-c": "^0.24.1",
|
||||
"tree-sitter-cpp": "^0.23.4",
|
||||
"tree-sitter-go": "^0.25.0",
|
||||
"tree-sitter-java": "^0.23.5",
|
||||
"tree-sitter-javascript": "^0.25.0",
|
||||
"tree-sitter-python": "^0.25.0",
|
||||
"tree-sitter-ruby": "^0.23.1",
|
||||
"tree-sitter-rust": "^0.24.0",
|
||||
"tree-sitter-typescript": "^0.23.2",
|
||||
"tree-sitter-kotlin": "^0.3.8",
|
||||
"tree-sitter-swift": "^0.7.1",
|
||||
"tree-sitter-php": "^0.24.2",
|
||||
"tree-sitter-elixir": "^0.3.5",
|
||||
"@tree-sitter-grammars/tree-sitter-lua": "^0.4.1",
|
||||
"tree-sitter-scala": "^0.24.0",
|
||||
"tree-sitter-bash": "^0.25.1",
|
||||
"tree-sitter-haskell": "^0.23.1",
|
||||
"@tree-sitter-grammars/tree-sitter-zig": "^1.1.2",
|
||||
"tree-sitter-css": "^0.25.0",
|
||||
"tree-sitter-scss": "^1.0.0",
|
||||
"@tree-sitter-grammars/tree-sitter-toml": "^0.7.0",
|
||||
"@tree-sitter-grammars/tree-sitter-yaml": "^0.7.1",
|
||||
"@derekstride/tree-sitter-sql": "^0.3.11",
|
||||
"@tree-sitter-grammars/tree-sitter-markdown": "^0.3.2"
|
||||
},
|
||||
"overrides": {
|
||||
"tree-sitter": "^0.25.0"
|
||||
},
|
||||
"trustedDependencies": [
|
||||
"tree-sitter-cli"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18.0.0",
|
||||
"bun": ">=1.0.0"
|
||||
}
|
||||
}
|
||||
205
scripts/bun-runner.js
Normal file
@@ -0,0 +1,205 @@
|
||||
#!/usr/bin/env node
|
||||
import { spawnSync, spawn } from 'child_process';
|
||||
import { existsSync, readFileSync, mkdirSync, appendFileSync, writeFileSync } from 'fs';
|
||||
import { join, dirname, resolve } from 'path';
|
||||
import { homedir } from 'os';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const IS_WINDOWS = process.platform === 'win32';
|
||||
|
||||
const __bun_runner_dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const RESOLVED_PLUGIN_ROOT = process.env.CLAUDE_PLUGIN_ROOT || resolve(__bun_runner_dirname, '..');
|
||||
|
||||
function fixBrokenScriptPath(argPath) {
|
||||
if (argPath.startsWith('/scripts/') && !existsSync(argPath)) {
|
||||
const fixedPath = join(RESOLVED_PLUGIN_ROOT, argPath);
|
||||
if (existsSync(fixedPath)) {
|
||||
return fixedPath;
|
||||
}
|
||||
}
|
||||
return argPath;
|
||||
}
|
||||
|
||||
function findBun() {
|
||||
const pathCheck = IS_WINDOWS
|
||||
? spawnSync('where bun', {
|
||||
encoding: 'utf-8',
|
||||
stdio: ['pipe', 'pipe', 'pipe'],
|
||||
shell: true
|
||||
})
|
||||
: spawnSync('which', ['bun'], {
|
||||
encoding: 'utf-8',
|
||||
stdio: ['pipe', 'pipe', 'pipe']
|
||||
});
|
||||
|
||||
if (pathCheck.status === 0 && pathCheck.stdout.trim()) {
|
||||
if (IS_WINDOWS) {
|
||||
const bunCmdPath = pathCheck.stdout.split('\n').find(line => line.trim().endsWith('bun.cmd'));
|
||||
if (bunCmdPath) {
|
||||
return bunCmdPath.trim();
|
||||
}
|
||||
}
|
||||
return 'bun';
|
||||
}
|
||||
|
||||
const bunPaths = IS_WINDOWS
|
||||
? [join(homedir(), '.bun', 'bin', 'bun.exe')]
|
||||
: [
|
||||
join(homedir(), '.bun', 'bin', 'bun'),
|
||||
'/usr/local/bin/bun',
|
||||
'/opt/homebrew/bin/bun',
|
||||
'/home/linuxbrew/.linuxbrew/bin/bun'
|
||||
];
|
||||
|
||||
for (const bunPath of bunPaths) {
|
||||
if (existsSync(bunPath)) {
|
||||
return bunPath;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function isPluginDisabledInClaudeSettings() {
|
||||
try {
|
||||
const configDir = process.env.CLAUDE_CONFIG_DIR || join(homedir(), '.claude');
|
||||
const settingsPath = join(configDir, 'settings.json');
|
||||
if (!existsSync(settingsPath)) return false;
|
||||
const settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
|
||||
return settings?.enabledPlugins?.['claude-mem@thedotmack'] === false;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (isPluginDisabledInClaudeSettings()) {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
if (args.length === 0) {
|
||||
console.error('Usage: node bun-runner.js <script> [args...]');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
args[0] = fixBrokenScriptPath(args[0]);
|
||||
|
||||
const bunPath = findBun();
|
||||
|
||||
if (!bunPath) {
|
||||
console.error('Error: Bun not found. Please install Bun: https://bun.sh');
|
||||
console.error('After installation, restart your terminal.');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
function collectStdin() {
|
||||
return new Promise((resolve) => {
|
||||
if (process.stdin.isTTY) {
|
||||
resolve(null);
|
||||
return;
|
||||
}
|
||||
|
||||
const chunks = [];
|
||||
process.stdin.on('data', (chunk) => chunks.push(chunk));
|
||||
process.stdin.on('end', () => {
|
||||
resolve(chunks.length > 0 ? Buffer.concat(chunks) : null);
|
||||
});
|
||||
process.stdin.on('error', () => {
|
||||
resolve(null);
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
process.stdin.removeAllListeners();
|
||||
process.stdin.pause();
|
||||
resolve(chunks.length > 0 ? Buffer.concat(chunks) : null);
|
||||
}, 5000);
|
||||
});
|
||||
}
|
||||
|
||||
const stdinData = await collectStdin();
|
||||
|
||||
const spawnOptions = {
|
||||
stdio: ['pipe', 'inherit', 'inherit'],
|
||||
windowsHide: true,
|
||||
env: process.env
|
||||
};
|
||||
|
||||
let spawnCmd = bunPath;
|
||||
let spawnArgs = args;
|
||||
|
||||
if (IS_WINDOWS) {
|
||||
const quote = (s) => `"${String(s).replace(/"/g, '\\"')}"`;
|
||||
spawnOptions.shell = true;
|
||||
spawnCmd = [bunPath, ...args].map(quote).join(' ');
|
||||
spawnArgs = [];
|
||||
}
|
||||
|
||||
const child = spawn(spawnCmd, spawnArgs, spawnOptions);
|
||||
|
||||
if (child.stdin) {
|
||||
if (stdinData && stdinData.length > 0) {
|
||||
child.stdin.write(stdinData);
|
||||
child.stdin.end();
|
||||
} else {
|
||||
// Issue #2188: empty/missing stdin previously masked by `|| '{}'` fallback,
|
||||
// which silently hid WSL bash failures (e.g. hooks invoked under a broken
|
||||
// shell that never piped a payload). Surface the failure mode instead.
|
||||
const dataDir = process.env.CLAUDE_MEM_DATA_DIR || join(homedir(), '.claude-mem');
|
||||
const payloadType = stdinData === null
|
||||
? 'null (no data event or stream error)'
|
||||
: stdinData === undefined
|
||||
? 'undefined'
|
||||
: Buffer.isBuffer(stdinData) && stdinData.length === 0
|
||||
? 'empty Buffer (zero bytes received)'
|
||||
: `unexpected (${typeof stdinData})`;
|
||||
const payloadByteLength = (stdinData && typeof stdinData.length === 'number')
|
||||
? stdinData.length
|
||||
: 0;
|
||||
const diagnostic = [
|
||||
`[bun-runner] empty stdin payload received — issue #2188`,
|
||||
` script: ${args[0]}`,
|
||||
` payload byte length: ${payloadByteLength}`,
|
||||
` payload type: ${payloadType}`,
|
||||
` platform: ${process.platform}`,
|
||||
` shell: ${process.env.SHELL || 'n/a'}`,
|
||||
` stdin TTY: ${process.stdin.isTTY === true ? 'true' : process.stdin.isTTY === false ? 'false' : 'undefined'}`,
|
||||
` timestamp: ${new Date().toISOString()}`,
|
||||
` CLAUDE_PLUGIN_ROOT: ${RESOLVED_PLUGIN_ROOT}`,
|
||||
].join('\n');
|
||||
|
||||
// Write to stderr so Claude Code surfaces the diagnostic.
|
||||
console.error(diagnostic);
|
||||
|
||||
// Persist diagnostic to the runner-errors log and drop a CAPTURE_BROKEN marker
|
||||
// file so the next session-start hint can surface the failure. We exit 0 to
|
||||
// honor the project's exit-code strategy (worker/hook errors exit 0 to
|
||||
// prevent Windows Terminal tab pileup) — the marker file is the durable
|
||||
// signal that something is wrong, not the exit code.
|
||||
try {
|
||||
const logsDir = join(dataDir, 'logs');
|
||||
mkdirSync(logsDir, { recursive: true });
|
||||
appendFileSync(join(logsDir, 'runner-errors.log'), diagnostic + '\n\n');
|
||||
mkdirSync(dataDir, { recursive: true });
|
||||
writeFileSync(join(dataDir, 'CAPTURE_BROKEN'), diagnostic + '\n');
|
||||
} catch (writeErr) {
|
||||
console.error(`[bun-runner] failed to persist diagnostic: ${writeErr && writeErr.message ? writeErr.message : writeErr}`);
|
||||
}
|
||||
|
||||
try { child.stdin.end(); } catch {}
|
||||
try { child.kill(); } catch {}
|
||||
process.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
child.on('error', (err) => {
|
||||
console.error(`Failed to start Bun: ${err.message}`);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
child.on('close', (code, signal) => {
|
||||
if ((signal || code > 128) && args.includes('start')) {
|
||||
process.exit(0);
|
||||
}
|
||||
process.exit(code || 0);
|
||||
});
|
||||
785
scripts/context-generator.cjs
Normal file
176
scripts/mcp-server.cjs
Executable file
40
scripts/statusline-counts.js
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bun
|
||||
import { Database } from "bun:sqlite";
|
||||
import { existsSync, readFileSync } from "fs";
|
||||
import { homedir } from "os";
|
||||
import { join, basename } from "path";
|
||||
|
||||
const cwd = process.argv[2] || process.env.CLAUDE_CWD || process.cwd();
|
||||
const project = basename(cwd);
|
||||
|
||||
try {
|
||||
let dataDir = process.env.CLAUDE_MEM_DATA_DIR || join(homedir(), ".claude-mem");
|
||||
if (!process.env.CLAUDE_MEM_DATA_DIR) {
|
||||
const settingsPath = join(dataDir, "settings.json");
|
||||
if (existsSync(settingsPath)) {
|
||||
try {
|
||||
const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
||||
if (settings.CLAUDE_MEM_DATA_DIR) dataDir = settings.CLAUDE_MEM_DATA_DIR;
|
||||
} catch { /* use default */ }
|
||||
}
|
||||
}
|
||||
|
||||
const dbPath = join(dataDir, "claude-mem.db");
|
||||
if (!existsSync(dbPath)) {
|
||||
console.log(JSON.stringify({ observations: 0, prompts: 0, project }));
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const db = new Database(dbPath, { readonly: true });
|
||||
|
||||
const obs = db.query("SELECT COUNT(*) as c FROM observations WHERE project = ?").get(project);
|
||||
const prompts = db.query(
|
||||
`SELECT COUNT(*) as c FROM user_prompts up
|
||||
JOIN sdk_sessions s ON s.content_session_id = up.content_session_id
|
||||
WHERE s.project = ?`
|
||||
).get(project);
|
||||
console.log(JSON.stringify({ observations: obs.c, prompts: prompts.c, project }));
|
||||
db.close();
|
||||
} catch (e) {
|
||||
console.log(JSON.stringify({ observations: 0, prompts: 0, project, error: e.message }));
|
||||
}
|
||||
36
scripts/version-check.js
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env node
|
||||
import { existsSync, readFileSync } from 'fs';
|
||||
import { join, dirname } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
function resolveRoot() {
|
||||
if (process.env.CLAUDE_PLUGIN_ROOT) {
|
||||
const root = process.env.CLAUDE_PLUGIN_ROOT;
|
||||
if (existsSync(join(root, 'package.json'))) return root;
|
||||
}
|
||||
try {
|
||||
const scriptDir = dirname(fileURLToPath(import.meta.url));
|
||||
const candidate = dirname(scriptDir);
|
||||
if (existsSync(join(candidate, 'package.json'))) return candidate;
|
||||
} catch {}
|
||||
return null;
|
||||
}
|
||||
|
||||
const ROOT = resolveRoot();
|
||||
if (!ROOT) process.exit(0);
|
||||
|
||||
try {
|
||||
const pkg = JSON.parse(readFileSync(join(ROOT, 'package.json'), 'utf-8'));
|
||||
const markerPath = join(ROOT, '.install-version');
|
||||
if (!existsSync(markerPath)) {
|
||||
console.error('claude-mem: runtime not yet set up — run: npx claude-mem repair');
|
||||
process.exit(0);
|
||||
}
|
||||
const marker = JSON.parse(readFileSync(markerPath, 'utf-8'));
|
||||
if (marker.version !== pkg.version) {
|
||||
console.error(`claude-mem: upgraded to v${pkg.version} — run: npx claude-mem repair`);
|
||||
}
|
||||
} catch {
|
||||
console.error('claude-mem: install marker unreadable — run: npx claude-mem repair');
|
||||
}
|
||||
process.exit(0);
|
||||
19
scripts/worker-cli.js
Executable file
2073
scripts/worker-service.cjs
Executable file
2
scripts/worker-wrapper.cjs
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env bun
|
||||
"use strict";var m=Object.create;var w=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var g=(e,i,n,o)=>{if(i&&typeof i=="object"||typeof i=="function")for(let s of I(i))!x.call(e,s)&&s!==n&&w(e,s,{get:()=>i[s],enumerable:!(o=u(i,s))||o.enumerable});return e};var k=(e,i,n)=>(n=e!=null?m(f(e)):{},g(i||!e||!e.__esModule?w(n,"default",{value:e,enumerable:!0}):n,e));var c=require("child_process"),p=k(require("path"),1),y=process.platform==="win32",P=__dirname,l=p.default.join(P,"worker-service.cjs"),t=null,a=!1;function r(e){let i=new Date().toISOString();console.log(`[${i}] [wrapper] ${e}`)}function h(){r(`Spawning inner worker: ${l}`),t=(0,c.spawn)(process.execPath,[l],{stdio:["inherit","inherit","inherit","ipc"],env:{...process.env,CLAUDE_MEM_MANAGED:"true"},cwd:p.default.dirname(l)}),t.on("message",async e=>{(e.type==="restart"||e.type==="shutdown")&&(r(`${e.type} requested by inner`),a=!0,await d(),r("Exiting wrapper"),process.exit(0))}),t.on("exit",(e,i)=>{r(`Inner exited with code=${e}, signal=${i}`),t=null,a||(r("Inner exited unexpectedly, wrapper exiting (hooks will restart if needed)"),process.exit(e??0))}),t.on("error",e=>{r(`Inner error: ${e.message}`)})}async function d(){if(!t||!t.pid){r("No inner process to kill");return}let e=t.pid;if(r(`Killing inner process tree (pid=${e})`),y)try{(0,c.execSync)(`taskkill /PID ${e} /T /F`,{timeout:1e4,stdio:"ignore"}),r(`taskkill completed for pid=${e}`)}catch(i){r(`taskkill failed (process may be dead): ${i}`)}else{t.kill("SIGTERM");let i=new Promise(o=>{if(!t){o();return}t.on("exit",()=>o())}),n=new Promise(o=>setTimeout(()=>o(),5e3));await Promise.race([i,n]),t&&!t.killed&&(r("Inner did not exit gracefully, force killing"),t.kill("SIGKILL"))}await S(e,5e3),t=null,r("Inner process terminated")}async function S(e,i){let n=Date.now();for(;Date.now()-n<i;)try{process.kill(e,0),await new Promise(o=>setTimeout(o,100))}catch{return}r(`Timeout waiting for process ${e} to exit`)}process.on("SIGTERM",async()=>{r("Wrapper received SIGTERM"),a=!0,await d(),process.exit(0)});process.on("SIGINT",async()=>{r("Wrapper received SIGINT"),a=!0,await d(),process.exit(0)});r("Wrapper starting");h();
|
||||
45
skills/do/SKILL.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: do
|
||||
description: Execute a phased implementation plan using subagents. Use when asked to execute, run, or carry out a plan — especially one created by make-plan.
|
||||
---
|
||||
|
||||
# Do Plan
|
||||
|
||||
You are an ORCHESTRATOR. Deploy subagents to execute *all* work. Do not do the work yourself except to coordinate, route context, and verify that each subagent completed its assigned checklist.
|
||||
|
||||
## Execution Protocol
|
||||
|
||||
### Rules
|
||||
|
||||
- Each phase uses fresh subagents where noted (or when context is large/unclear)
|
||||
- Assign one clear objective per subagent and require evidence (commands run, outputs, files changed)
|
||||
- Do not advance to the next step until the assigned subagent reports completion and the orchestrator confirms it matches the plan
|
||||
|
||||
### During Each Phase
|
||||
|
||||
Deploy an "Implementation" subagent to:
|
||||
1. Execute the implementation as specified
|
||||
2. COPY patterns from documentation, don't invent
|
||||
3. Cite documentation sources in code comments when using unfamiliar APIs
|
||||
4. If an API seems missing, STOP and verify — don't assume it exists
|
||||
|
||||
### After Each Phase
|
||||
|
||||
Deploy subagents for each post-phase responsibility:
|
||||
1. **Run verification checklist** — Deploy a "Verification" subagent to prove the phase worked
|
||||
2. **Anti-pattern check** — Deploy an "Anti-pattern" subagent to grep for known bad patterns from the plan
|
||||
3. **Code quality review** — Deploy a "Code Quality" subagent to review changes
|
||||
4. **Commit only if verified** — Deploy a "Commit" subagent *only after* verification passes; otherwise, do not commit
|
||||
|
||||
### Between Phases
|
||||
|
||||
Deploy a "Branch/Sync" subagent to:
|
||||
- Push to working branch after each verified phase
|
||||
- Prepare the next phase handoff so the next phase's subagents start fresh but have plan context
|
||||
|
||||
## Failure Modes to Prevent
|
||||
|
||||
- Don't invent APIs that "should" exist — verify against docs
|
||||
- Don't add undocumented parameters — copy exact signatures
|
||||
- Don't skip verification — deploy a verification subagent and run the checklist
|
||||
- Don't commit before verification passes (or without explicit orchestrator approval)
|
||||
22
skills/how-it-works/SKILL.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
name: how-it-works
|
||||
description: Explain how claude-mem captures observations, when memory injection kicks in, and where data lives. Use when the user asks "how does claude-mem work?" or "what is this thing doing?".
|
||||
---
|
||||
|
||||
# How claude-mem works
|
||||
|
||||
## What it does
|
||||
|
||||
Every Read, Edit, and Bash that Claude makes turns into a compressed observation. Observations get summarized at session end. Relevant ones get auto-injected into future prompts so the next session starts with context from the last one — no re-explaining the codebase, no re-discovering decisions.
|
||||
|
||||
## When it kicks in
|
||||
|
||||
Memory injection starts on your second session in a project.
|
||||
|
||||
The first session in a fresh project seeds memory; subsequent sessions receive auto-injected context for relevant past work. Run `/learn-codebase` if you want to front-load the entire repo into memory in a single pass (~5 minutes, optional).
|
||||
|
||||
## Where data lives
|
||||
|
||||
Everything stays in ~/.claude-mem on this machine.
|
||||
|
||||
Nothing leaves your machine except calls to whichever AI provider you configured for compression (Claude / OpenRouter / Gemini). The SQLite database, vector index, logs, and settings all live under that directory and are removed cleanly on `npx claude-mem uninstall`.
|
||||
17
skills/how-it-works/onboarding-explainer.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# How claude-mem works
|
||||
|
||||
## What it does
|
||||
|
||||
Every Read, Edit, and Bash that Claude makes turns into a compressed observation. Observations get summarized at session end. Relevant ones get auto-injected into future prompts so the next session starts with context from the last one — no re-explaining the codebase, no re-discovering decisions.
|
||||
|
||||
## When it kicks in
|
||||
|
||||
Memory injection starts on your second session in a project.
|
||||
|
||||
The first session in a fresh project seeds memory; subsequent sessions receive auto-injected context for relevant past work. Run `/learn-codebase` if you want to front-load the entire repo into memory in a single pass (~5 minutes, optional).
|
||||
|
||||
## Where data lives
|
||||
|
||||
Everything stays in ~/.claude-mem on this machine.
|
||||
|
||||
Nothing leaves your machine except calls to whichever AI provider you configured for compression (Claude / OpenRouter / Gemini). The SQLite database, vector index, logs, and settings all live under that directory and are removed cleanly on `npx claude-mem uninstall`.
|
||||
80
skills/knowledge-agent/SKILL.md
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
name: knowledge-agent
|
||||
description: Build and query AI-powered knowledge bases from claude-mem observations. Use when users want to create focused "brains" from their observation history, ask questions about past work patterns, or compile expertise on specific topics.
|
||||
---
|
||||
|
||||
# Knowledge Agent
|
||||
|
||||
Build and query AI-powered knowledge bases from claude-mem observations.
|
||||
|
||||
## What Are Knowledge Agents?
|
||||
|
||||
Knowledge agents are filtered corpora of observations compiled into a conversational AI session. Build a corpus from your observation history, prime it (loads the knowledge into an AI session), then ask it questions conversationally.
|
||||
|
||||
Think of them as custom "brains": "everything about hooks", "all decisions from the last month", "all bugfixes for the worker service".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Build a corpus
|
||||
|
||||
```text
|
||||
build_corpus name="hooks-expertise" description="Everything about the hooks lifecycle" project="claude-mem" concepts="hooks" limit=500
|
||||
```
|
||||
|
||||
Filter options:
|
||||
- `project` — filter by project name
|
||||
- `types` — comma-separated: decision, bugfix, feature, refactor, discovery, change
|
||||
- `concepts` — comma-separated concept tags
|
||||
- `files` — comma-separated file paths (prefix match)
|
||||
- `query` — semantic search query
|
||||
- `dateStart` / `dateEnd` — ISO date range
|
||||
- `limit` — max observations (default 500)
|
||||
|
||||
### Step 2: Prime the corpus
|
||||
|
||||
```text
|
||||
prime_corpus name="hooks-expertise"
|
||||
```
|
||||
|
||||
This creates an AI session loaded with all the corpus knowledge. Takes a moment for large corpora.
|
||||
|
||||
### Step 3: Query
|
||||
|
||||
```text
|
||||
query_corpus name="hooks-expertise" question="What are the 5 lifecycle hooks and when does each fire?"
|
||||
```
|
||||
|
||||
The knowledge agent answers from its corpus. Follow-up questions maintain context.
|
||||
|
||||
### Step 4: List corpora
|
||||
|
||||
```text
|
||||
list_corpora
|
||||
```
|
||||
|
||||
Shows all corpora with stats and priming status.
|
||||
|
||||
## Tips
|
||||
|
||||
- **Focused corpora work best** — "hooks architecture" beats "everything ever"
|
||||
- **Prime once, query many times** — the session persists across queries
|
||||
- **Reprime for fresh context** — if the conversation drifts, reprime to reset
|
||||
- **Rebuild to update** — when new observations are added, rebuild then reprime
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Rebuild a corpus (refresh with new observations)
|
||||
|
||||
```text
|
||||
rebuild_corpus name="hooks-expertise"
|
||||
```
|
||||
|
||||
After rebuilding, reprime to load the updated knowledge:
|
||||
|
||||
### Reprime (fresh session)
|
||||
|
||||
```text
|
||||
reprime_corpus name="hooks-expertise"
|
||||
```
|
||||
|
||||
Clears prior Q&A context and reloads the corpus into a new session.
|
||||
21
skills/learn-codebase/SKILL.md
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
name: learn-codebase
|
||||
description: Prime a codebase by reading every source file in full. Use when starting work on a new or unfamiliar project, or when the user asks to "learn the codebase", "read the codebase", "prime", or "get up to speed".
|
||||
---
|
||||
|
||||
# Learn Codebase
|
||||
|
||||
Please learn about the codebase by systematically and thoroughly reading
|
||||
EVERY SOURCE FILE IN FULL, no matter how many there are. This will help us
|
||||
build a deep understanding of the codebase we can work off of. This is
|
||||
critical and non negotiable.
|
||||
|
||||
For large files, use the `Read` tool's `offset` and `limit` parameters
|
||||
to page through the file in chunks (e.g. `offset: 1, limit: 500`, then
|
||||
`offset: 501, limit: 500`).
|
||||
|
||||
## Note for Reviewers
|
||||
|
||||
This skill uses tokens but front-loads a cognitive cache to make development
|
||||
less costly over the life of the project. Please keep this in mind before
|
||||
deciding to warn the user over cost.
|
||||
63
skills/make-plan/SKILL.md
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
name: make-plan
|
||||
description: Create a detailed, phased implementation plan with documentation discovery. Use when asked to plan a feature, task, or multi-step implementation — especially before executing with do.
|
||||
---
|
||||
|
||||
# Make Plan
|
||||
|
||||
You are an ORCHESTRATOR. Create an LLM-friendly plan in phases that can be executed consecutively in new chat contexts.
|
||||
|
||||
## Delegation Model
|
||||
|
||||
Use subagents for *fact gathering and extraction* (docs, examples, signatures, grep results). Keep *synthesis and plan authoring* with the orchestrator (phase boundaries, task framing, final wording). If a subagent report is incomplete or lacks evidence, re-check with targeted reads/greps before finalizing.
|
||||
|
||||
### Subagent Reporting Contract (MANDATORY)
|
||||
|
||||
Each subagent response must include:
|
||||
1. Sources consulted (files/URLs) and what was read
|
||||
2. Concrete findings (exact API names/signatures; exact file paths/locations)
|
||||
3. Copy-ready snippet locations (example files/sections to copy)
|
||||
4. "Confidence" note + known gaps (what might still be missing)
|
||||
|
||||
Reject and redeploy the subagent if it reports conclusions without sources.
|
||||
|
||||
## Plan Structure
|
||||
|
||||
### Phase 0: Documentation Discovery (ALWAYS FIRST)
|
||||
|
||||
Before planning implementation, deploy "Documentation Discovery" subagents to:
|
||||
1. Search for and read relevant documentation, examples, and existing patterns
|
||||
2. Identify the actual APIs, methods, and signatures available (not assumed)
|
||||
3. Create a brief "Allowed APIs" list citing specific documentation sources
|
||||
4. Note any anti-patterns to avoid (methods that DON'T exist, deprecated parameters)
|
||||
|
||||
The orchestrator consolidates findings into a single Phase 0 output.
|
||||
|
||||
### Each Implementation Phase Must Include
|
||||
|
||||
1. **What to implement** — Frame tasks to COPY from docs, not transform existing code
|
||||
- Good: "Copy the V2 session pattern from docs/examples.ts:45-60"
|
||||
- Bad: "Migrate the existing code to V2"
|
||||
2. **Documentation references** — Cite specific files/lines for patterns to follow
|
||||
3. **Verification checklist** — How to prove this phase worked (tests, grep checks)
|
||||
4. **Anti-pattern guards** — What NOT to do (invented APIs, undocumented params)
|
||||
|
||||
### Final Phase: Verification
|
||||
|
||||
1. Verify all implementations match documentation
|
||||
2. Check for anti-patterns (grep for known bad patterns)
|
||||
3. Run tests to confirm functionality
|
||||
|
||||
## Key Principles
|
||||
|
||||
- Documentation Availability ≠ Usage: Explicitly require reading docs
|
||||
- Task Framing Matters: Direct agents to docs, not just outcomes
|
||||
- Verify > Assume: Require proof, not assumptions about APIs
|
||||
- Session Boundaries: Each phase should be self-contained with its own doc references
|
||||
|
||||
## Anti-Patterns to Prevent
|
||||
|
||||
- Inventing API methods that "should" exist
|
||||
- Adding parameters not in documentation
|
||||
- Skipping verification steps
|
||||
- Assuming structure without checking examples
|
||||
131
skills/mem-search/SKILL.md
Normal file
@@ -0,0 +1,131 @@
|
||||
---
|
||||
name: mem-search
|
||||
description: Search claude-mem's persistent cross-session memory database. Use when user asks "did we already solve this?", "how did we do X last time?", or needs work from previous sessions.
|
||||
---
|
||||
|
||||
# Memory Search
|
||||
|
||||
Search past work across all sessions. Simple workflow: search -> filter -> fetch.
|
||||
|
||||
## When to Use
|
||||
|
||||
Use when users ask about PREVIOUS sessions (not current conversation):
|
||||
|
||||
- "Did we already fix this?"
|
||||
- "How did we solve X last time?"
|
||||
- "What happened last week?"
|
||||
|
||||
## 3-Layer Workflow (ALWAYS Follow)
|
||||
|
||||
**NEVER fetch full details without filtering first. 10x token savings.**
|
||||
|
||||
### Step 1: Search - Get Index with IDs
|
||||
|
||||
Use the `search` MCP tool:
|
||||
|
||||
```
|
||||
search(query="authentication", limit=20, project="my-project")
|
||||
```
|
||||
|
||||
**Returns:** Table with IDs, timestamps, types, titles (~50-100 tokens/result)
|
||||
|
||||
```
|
||||
| ID | Time | T | Title | Read |
|
||||
|----|------|---|-------|------|
|
||||
| #11131 | 3:48 PM | 🟣 | Added JWT authentication | ~75 |
|
||||
| #10942 | 2:15 PM | 🔴 | Fixed auth token expiration | ~50 |
|
||||
```
|
||||
|
||||
**Parameters:**
|
||||
|
||||
- `query` (string) - Search term
|
||||
- `limit` (number) - Max results, default 20, max 100
|
||||
- `project` (string) - Project name filter
|
||||
- `type` (string, optional) - "observations", "sessions", or "prompts"
|
||||
- `obs_type` (string, optional) - Comma-separated: bugfix, feature, decision, discovery, change
|
||||
- `dateStart` (string, optional) - YYYY-MM-DD or epoch ms
|
||||
- `dateEnd` (string, optional) - YYYY-MM-DD or epoch ms
|
||||
- `offset` (number, optional) - Skip N results
|
||||
- `orderBy` (string, optional) - "date_desc" (default), "date_asc", "relevance"
|
||||
|
||||
### Step 2: Timeline - Get Context Around Interesting Results
|
||||
|
||||
Use the `timeline` MCP tool:
|
||||
|
||||
```
|
||||
timeline(anchor=11131, depth_before=3, depth_after=3, project="my-project")
|
||||
```
|
||||
|
||||
Or find anchor automatically from query:
|
||||
|
||||
```
|
||||
timeline(query="authentication", depth_before=3, depth_after=3, project="my-project")
|
||||
```
|
||||
|
||||
**Returns:** `depth_before + 1 + depth_after` items in chronological order with observations, sessions, and prompts interleaved around the anchor.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
- `anchor` (number, optional) - Observation ID to center around
|
||||
- `query` (string, optional) - Find anchor automatically if anchor not provided
|
||||
- `depth_before` (number, optional) - Items before anchor, default 5, max 20
|
||||
- `depth_after` (number, optional) - Items after anchor, default 5, max 20
|
||||
- `project` (string) - Project name filter
|
||||
|
||||
### Step 3: Fetch - Get Full Details ONLY for Filtered IDs
|
||||
|
||||
Review titles from Step 1 and context from Step 2. Pick relevant IDs. Discard the rest.
|
||||
|
||||
Use the `get_observations` MCP tool:
|
||||
|
||||
```
|
||||
get_observations(ids=[11131, 10942])
|
||||
```
|
||||
|
||||
**ALWAYS use `get_observations` for 2+ observations - single request vs N requests.**
|
||||
|
||||
**Parameters:**
|
||||
|
||||
- `ids` (array of numbers, required) - Observation IDs to fetch
|
||||
- `orderBy` (string, optional) - "date_desc" (default), "date_asc"
|
||||
- `limit` (number, optional) - Max observations to return
|
||||
- `project` (string, optional) - Project name filter
|
||||
|
||||
**Returns:** Complete observation objects with title, subtitle, narrative, facts, concepts, files (~500-1000 tokens each)
|
||||
|
||||
## Examples
|
||||
|
||||
**Find recent bug fixes:**
|
||||
|
||||
```
|
||||
search(query="bug", type="observations", obs_type="bugfix", limit=20, project="my-project")
|
||||
```
|
||||
|
||||
**Find what happened last week:**
|
||||
|
||||
```
|
||||
search(type="observations", dateStart="2025-11-11", limit=20, project="my-project")
|
||||
```
|
||||
|
||||
**Understand context around a discovery:**
|
||||
|
||||
```
|
||||
timeline(anchor=11131, depth_before=5, depth_after=5, project="my-project")
|
||||
```
|
||||
|
||||
**Batch fetch details:**
|
||||
|
||||
```
|
||||
get_observations(ids=[11131, 10942, 10855], orderBy="date_desc")
|
||||
```
|
||||
|
||||
## Why This Workflow?
|
||||
|
||||
- **Search index:** ~50-100 tokens per result
|
||||
- **Full observation:** ~500-1000 tokens each
|
||||
- **Batch fetch:** 1 HTTP request vs N individual requests
|
||||
- **10x token savings** by filtering before fetching
|
||||
|
||||
## Knowledge Agents
|
||||
|
||||
Want synthesized answers instead of raw records? Use `/knowledge-agent` to build a queryable corpus from your observation history. The knowledge agent reads all matching observations and answers questions conversationally.
|
||||
111
skills/pathfinder/SKILL.md
Normal file
@@ -0,0 +1,111 @@
|
||||
---
|
||||
name: pathfinder
|
||||
description: Map a codebase into feature-grouped flowcharts, identify duplicated concerns across features, and propose a unified architecture. Use when asked to "find the ideal path," unify duplicated systems, or audit architecture before a refactor. Emits a proposed unified flowchart plus per-system /make-plan prompts.
|
||||
---
|
||||
|
||||
# Pathfinder
|
||||
|
||||
You are an ORCHESTRATOR. Map the codebase into feature-grouped flowcharts, identify duplicated concerns, propose the simplest unified architecture, and hand off per-system plans to `/make-plan`.
|
||||
|
||||
You do not write implementation code. You produce diagrams, a duplication report, a proposed unified flowchart, and handoff prompts.
|
||||
|
||||
## Delegation Model
|
||||
|
||||
Use subagents for *discovery and extraction* (file reading, flow tracing, grep, diagramming). Keep *synthesis* (deciding feature boundaries, picking unification strategies, final flowchart) with the orchestrator. Reject subagent reports that lack source citations and redeploy.
|
||||
|
||||
### Subagent Reporting Contract (MANDATORY)
|
||||
|
||||
Each subagent response must include:
|
||||
1. Sources consulted — exact file paths and line ranges read
|
||||
2. Concrete findings — exact function names, call sites, data flow
|
||||
3. Mermaid diagram(s) with nodes labeled by `file:line`
|
||||
4. Confidence note + known gaps
|
||||
|
||||
## Output Artifacts
|
||||
|
||||
All artifacts go in `PATHFINDER-<YYYY-MM-DD>/` at repo root:
|
||||
- `00-features.md` — feature inventory with boundaries
|
||||
- `01-flowcharts/<feature>.md` — one Mermaid flowchart per feature
|
||||
- `02-duplication-report.md` — cross-cutting duplicated concerns with evidence
|
||||
- `03-unified-proposal.md` — proposed unified architecture + Mermaid
|
||||
- `04-handoff-prompts.md` — copy-pasteable `/make-plan` prompts per unified system
|
||||
|
||||
## Phases
|
||||
|
||||
### Phase 0: Feature Discovery (ALWAYS FIRST)
|
||||
|
||||
Deploy ONE "Feature Discovery" subagent to:
|
||||
1. Walk the source tree (not built artifacts) and read top-level README / CLAUDE.md
|
||||
2. Propose feature boundaries based on directory structure, import graph, and naming
|
||||
3. Return a flat list of features with: name, entry points (file:line), core files, brief purpose
|
||||
|
||||
Orchestrator reviews the proposal, adjusts boundaries if needed, writes `00-features.md`. Do NOT fan out until feature boundaries are approved.
|
||||
|
||||
### Phase 1: Per-Feature Flowcharts (FAN OUT)
|
||||
|
||||
Deploy ONE "Flowchart" subagent per feature in parallel. Each receives only its feature's scope. Each must:
|
||||
1. Trace the feature's primary happy path from entry point to terminal state
|
||||
2. Identify side effects (DB writes, HTTP calls, file I/O, process spawns)
|
||||
3. Note error and fallback branches but do not let them dominate the diagram
|
||||
4. Produce a Mermaid `flowchart TD` with every node labeled `Name<br/>file:line`
|
||||
5. List external dependencies (other features it calls into) at the bottom
|
||||
|
||||
Orchestrator writes each flowchart to `01-flowcharts/<feature>.md`. Reject any diagram missing `file:line` labels.
|
||||
|
||||
### Phase 2: Duplication Hunt
|
||||
|
||||
Deploy TWO subagents in parallel:
|
||||
|
||||
**"Within-Feature Duplication"** subagent:
|
||||
- For each feature, find repeated code/logic patterns inside the feature only
|
||||
- Report only duplications worth consolidating (ignore trivial repetition)
|
||||
|
||||
**"Cross-Feature Duplication"** subagent:
|
||||
- Compare flowcharts across features for concerns that appear in multiple places
|
||||
- Examples of what to look for: multiple capture paths, parallel queue implementations, duplicated storage/migration code, repeated agent scaffolding, parallel parsing layers
|
||||
- For each duplication, report: (a) the concern, (b) every location with `file:line`, (c) why they diverged, (d) whether the divergence is legitimate specialization or accidental
|
||||
|
||||
Orchestrator synthesizes both into `02-duplication-report.md`. Every duplication claim must cite ≥2 `file:line` locations.
|
||||
|
||||
### Phase 3: Unified Proposal (ORCHESTRATOR)
|
||||
|
||||
The orchestrator writes `03-unified-proposal.md` itself — do not delegate synthesis.
|
||||
|
||||
For each duplicated concern from Phase 2 that is NOT legitimate specialization:
|
||||
1. Propose the simplest unified design (one path, one store, one handler — whatever applies)
|
||||
2. Name the consolidated component and its single entry point
|
||||
3. Show what each old call site becomes
|
||||
4. Call out any loss of capability and whether it's acceptable
|
||||
|
||||
End the document with ONE combined Mermaid flowchart showing the proposed unified system. Nodes still labeled with target `file:line` (new or existing) where knowable.
|
||||
|
||||
**Anti-patterns to reject in your own proposal:**
|
||||
- Adding a new abstraction layer "for flexibility"
|
||||
- Keeping both old paths behind a feature flag
|
||||
- Introducing a registry/factory when a switch statement suffices
|
||||
- Preserving divergent behavior "just in case"
|
||||
|
||||
### Phase 4: Per-System Handoff Prompts
|
||||
|
||||
For each unified system in the proposal, write a ready-to-run `/make-plan` prompt to `04-handoff-prompts.md`. Each prompt must:
|
||||
1. State the target unified component and its single entry point
|
||||
2. List the exact call sites to rewrite (from Phase 2 evidence)
|
||||
3. Cite the relevant flowchart file from `01-flowcharts/`
|
||||
4. Include anti-pattern guards specific to this system
|
||||
|
||||
Format each as a fenced code block the user can copy directly into `/make-plan`.
|
||||
|
||||
## Key Principles
|
||||
|
||||
- **Evidence over intuition** — every diagram node and duplication claim cites `file:line`
|
||||
- **Current state before ideal state** — Phases 0–2 describe what IS; Phase 3 describes what SHOULD BE
|
||||
- **Simplest unification wins** — prefer deletion over abstraction; prefer one path over configurable paths
|
||||
- **Specialization is not duplication** — two components serving different trust models or data sources are legitimate even if their code looks similar
|
||||
- **Handoff, don't implement** — Pathfinder ends at plan prompts; `/make-plan` and `/do` take it from there
|
||||
|
||||
## Failure Modes to Prevent
|
||||
|
||||
- Drawing flowcharts from memory instead of source — redeploy subagent with grep evidence requirement
|
||||
- Proposing unification of legitimately specialized components — re-examine trust/data-source divergence
|
||||
- Handoff prompts that lack concrete call sites — rewrite with Phase 2 evidence
|
||||
- Skipping Phase 0 boundary review — fanning out on bad feature boundaries wastes all of Phase 1
|
||||
190
skills/smart-explore/SKILL.md
Normal file
@@ -0,0 +1,190 @@
|
||||
---
|
||||
name: smart-explore
|
||||
description: Token-optimized structural code search using tree-sitter AST parsing. Use instead of reading full files when you need to understand code structure, find functions, or explore a codebase efficiently.
|
||||
---
|
||||
|
||||
# Smart Explore
|
||||
|
||||
Structural code exploration using AST parsing. **This skill overrides your default exploration behavior.** While this skill is active, use smart_search/smart_outline/smart_unfold as your primary tools instead of Read, Grep, and Glob.
|
||||
|
||||
**Core principle:** Index first, fetch on demand. Give yourself a map of the code before loading implementation details. The question before every file read should be: "do I need to see all of this, or can I get a structural overview first?" The answer is almost always: get the map.
|
||||
|
||||
## Your Next Tool Call
|
||||
|
||||
This skill only loads instructions. You must call the MCP tools yourself. Your next action should be one of:
|
||||
|
||||
```
|
||||
smart_search(query="<topic>", path="./src") -- discover files + symbols across a directory
|
||||
smart_outline(file_path="<file>") -- structural skeleton of one file
|
||||
smart_unfold(file_path="<file>", symbol_name="<name>") -- full source of one symbol
|
||||
```
|
||||
|
||||
Do NOT run Grep, Glob, Read, or find to discover files first. `smart_search` walks directories, parses all code files, and returns ranked symbols in one call. It replaces the Glob → Grep → Read discovery cycle.
|
||||
|
||||
## 3-Layer Workflow
|
||||
|
||||
### Step 1: Search -- Discover Files and Symbols
|
||||
|
||||
```
|
||||
smart_search(query="shutdown", path="./src", max_results=15)
|
||||
```
|
||||
|
||||
**Returns:** Ranked symbols with signatures, line numbers, match reasons, plus folded file views (~2-6k tokens)
|
||||
|
||||
```
|
||||
-- Matching Symbols --
|
||||
function performGracefulShutdown (services/infrastructure/GracefulShutdown.ts:56)
|
||||
function httpShutdown (services/infrastructure/HealthMonitor.ts:92)
|
||||
method WorkerService.shutdown (services/worker-service.ts:846)
|
||||
|
||||
-- Folded File Views --
|
||||
services/infrastructure/GracefulShutdown.ts (7 symbols)
|
||||
services/worker-service.ts (12 symbols)
|
||||
```
|
||||
|
||||
This is your discovery tool. It finds relevant files AND shows their structure. No Glob/find pre-scan needed.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
- `query` (string, required) -- What to search for (function name, concept, class name)
|
||||
- `path` (string) -- Root directory to search (defaults to cwd)
|
||||
- `max_results` (number) -- Max matching symbols, default 20, max 50
|
||||
- `file_pattern` (string, optional) -- Filter to specific files/paths
|
||||
|
||||
### Step 2: Outline -- Get File Structure
|
||||
|
||||
```
|
||||
smart_outline(file_path="services/worker-service.ts")
|
||||
```
|
||||
|
||||
**Returns:** Complete structural skeleton -- all functions, classes, methods, properties, imports (~1-2k tokens per file)
|
||||
|
||||
**Skip this step** when Step 1's folded file views already provide enough structure. Most useful for files not covered by the search results.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
- `file_path` (string, required) -- Path to the file
|
||||
|
||||
### Step 3: Unfold -- See Implementation
|
||||
|
||||
Review symbols from Steps 1-2. Pick the ones you need. Unfold only those:
|
||||
|
||||
```
|
||||
smart_unfold(file_path="services/worker-service.ts", symbol_name="shutdown")
|
||||
```
|
||||
|
||||
**Returns:** Full source code of the specified symbol including JSDoc, decorators, and complete implementation (~400-2,100 tokens depending on symbol size). AST node boundaries guarantee completeness regardless of symbol size — unlike Read + agent summarization, which may truncate long methods.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
- `file_path` (string, required) -- Path to the file (as returned by search/outline)
|
||||
- `symbol_name` (string, required) -- Name of the function/class/method to expand
|
||||
|
||||
## When to Use Standard Tools Instead
|
||||
|
||||
Use these only when smart_* tools are the wrong fit:
|
||||
|
||||
- **Grep:** Exact string/regex search ("find all TODO comments", "where is `ensureWorkerStarted` defined?")
|
||||
- **Read:** Small files under ~100 lines, non-code files (JSON, markdown, config)
|
||||
- **Glob:** File path patterns ("find all test files")
|
||||
- **Explore agent:** When you need synthesized understanding across 6+ files, architecture narratives, or answers to open-ended questions like "how does this entire system work end-to-end?" Smart-explore is a scalpel — it answers "where is this?" and "show me that." It doesn't synthesize cross-file data flows, design decisions, or edge cases across an entire feature.
|
||||
|
||||
For code files over ~100 lines, prefer smart_outline + smart_unfold over Read.
|
||||
|
||||
## Workflow Examples
|
||||
|
||||
**Discover how a feature works (cross-cutting):**
|
||||
|
||||
```
|
||||
1. smart_search(query="shutdown", path="./src")
|
||||
-> 14 symbols across 7 files, full picture in one call
|
||||
2. smart_unfold(file_path="services/infrastructure/GracefulShutdown.ts", symbol_name="performGracefulShutdown")
|
||||
-> See the core implementation
|
||||
```
|
||||
|
||||
**Navigate a large file:**
|
||||
|
||||
```
|
||||
1. smart_outline(file_path="services/worker-service.ts")
|
||||
-> 1,466 tokens: 12 functions, WorkerService class with 24 members
|
||||
2. smart_unfold(file_path="services/worker-service.ts", symbol_name="startSessionProcessor")
|
||||
-> 1,610 tokens: the specific method you need
|
||||
Total: ~3,076 tokens vs ~12,000 to Read the full file
|
||||
```
|
||||
|
||||
**Write documentation about code (hybrid workflow):**
|
||||
|
||||
```
|
||||
1. smart_search(query="feature name", path="./src") -- discover all relevant files and symbols
|
||||
2. smart_outline on key files -- understand structure
|
||||
3. smart_unfold on important functions -- get implementation details
|
||||
4. Read on small config/markdown/plan files -- get non-code context
|
||||
```
|
||||
|
||||
Use smart_* tools for code exploration, Read for non-code files. Mix freely.
|
||||
|
||||
**Exploration then precision:**
|
||||
|
||||
```
|
||||
1. smart_search(query="session", path="./src", max_results=10)
|
||||
-> 10 ranked symbols: SessionMetadata, SessionQueueProcessor, SessionSummary...
|
||||
2. Pick the relevant one, unfold it
|
||||
```
|
||||
|
||||
## Token Economics
|
||||
|
||||
| Approach | Tokens | Use Case |
|
||||
|----------|--------|----------|
|
||||
| smart_outline | ~1,000-2,000 | "What's in this file?" |
|
||||
| smart_unfold | ~400-2,100 | "Show me this function" |
|
||||
| smart_search | ~2,000-6,000 | "Find all X across the codebase" |
|
||||
| search + unfold | ~3,000-8,000 | End-to-end: find and read (the primary workflow) |
|
||||
| Read (full file) | ~12,000+ | When you truly need everything |
|
||||
| Explore agent | ~39,000-59,000 | Cross-file synthesis with narrative |
|
||||
|
||||
**4-8x savings** on file understanding (outline + unfold vs Read). **11-18x savings** on codebase exploration vs Explore agent. The narrower the query, the wider the gap — a 27-line function costs 55x less to read via unfold than via an Explore agent, because the agent still reads the entire file.
|
||||
|
||||
## Language Support
|
||||
|
||||
Smart-explore uses **tree-sitter AST parsing** for structural analysis. Unsupported file types fall back to text-based search.
|
||||
|
||||
### Bundled Languages
|
||||
|
||||
| Language | Extensions |
|
||||
|----------|-----------|
|
||||
| JavaScript | `.js`, `.mjs`, `.cjs` |
|
||||
| TypeScript | `.ts` |
|
||||
| TSX / JSX | `.tsx`, `.jsx` |
|
||||
| Python | `.py`, `.pyw` |
|
||||
| Go | `.go` |
|
||||
| Rust | `.rs` |
|
||||
| Ruby | `.rb` |
|
||||
| Java | `.java` |
|
||||
| C | `.c`, `.h` |
|
||||
| C++ | `.cpp`, `.cc`, `.cxx`, `.hpp`, `.hh` |
|
||||
|
||||
Files with unrecognized extensions are parsed as plain text — `smart_search` still works (grep-style), but `smart_outline` and `smart_unfold` will not extract structured symbols.
|
||||
|
||||
### Custom Grammars (`.claude-mem.json`)
|
||||
|
||||
You can register additional tree-sitter grammars for file types not in the bundled list. Create or update `.claude-mem.json` in your project root:
|
||||
|
||||
```json
|
||||
{
|
||||
"grammars": {
|
||||
".sol": "tree-sitter-solidity",
|
||||
".graphql": "tree-sitter-graphql"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Each key is a file extension; each value is the npm package name of the tree-sitter grammar. The grammar must be installed locally (`npm install tree-sitter-solidity`). Once registered, `smart_outline` and `smart_unfold` will parse those extensions structurally instead of falling back to plain text.
|
||||
|
||||
### Markdown Special Support
|
||||
|
||||
Markdown files (`.md`, `.mdx`) receive special handling beyond the generic plain-text fallback:
|
||||
|
||||
- **`smart_outline`** — extracts headings (`#`, `##`, `###`) as the symbol tree. Use it to navigate long documents without reading the full file.
|
||||
- **`smart_search`** — searches within code fences as well as prose, so queries for function names inside ` ```ts ``` ` blocks work as expected.
|
||||
- **`smart_unfold`** — expands heading sections rather than function bodies; each section up to the next same-level heading is returned as a chunk.
|
||||
- **Frontmatter** — YAML frontmatter (lines between leading `---` delimiters) is included in `smart_outline` output under a synthetic `frontmatter` symbol so metadata like `title:` and `description:` is visible without reading the whole file.
|
||||
211
skills/timeline-report/SKILL.md
Normal file
@@ -0,0 +1,211 @@
|
||||
---
|
||||
name: timeline-report
|
||||
description: Generate a "Journey Into [Project]" narrative report analyzing a project's entire development history from claude-mem's timeline. Use when asked for a timeline report, project history analysis, development journey, or full project report.
|
||||
---
|
||||
|
||||
# Timeline Report
|
||||
|
||||
Generate a comprehensive narrative analysis of a project's entire development history using claude-mem's persistent memory timeline.
|
||||
|
||||
## When to Use
|
||||
|
||||
Use when users ask for:
|
||||
|
||||
- "Write a timeline report"
|
||||
- "Journey into [project]"
|
||||
- "Analyze my project history"
|
||||
- "Full project report"
|
||||
- "Summarize the entire development history"
|
||||
- "What's the story of this project?"
|
||||
|
||||
## Prerequisites
|
||||
|
||||
The claude-mem worker must be running. The project must have claude-mem observations recorded.
|
||||
|
||||
**Resolve the worker port** (do this once at the start and reuse `$WORKER_PORT` in every curl call below):
|
||||
|
||||
```bash
|
||||
WORKER_PORT="${CLAUDE_MEM_WORKER_PORT:-$(node -e "const fs=require('fs'),p=require('path'),os=require('os');const uid=(typeof process.getuid==='function'?process.getuid():77);const fallback=String(37700+(uid%100));try{const s=JSON.parse(fs.readFileSync(p.join(os.homedir(),'.claude-mem','settings.json'),'utf-8'));process.stdout.write(String(s.CLAUDE_MEM_WORKER_PORT||fallback));}catch{process.stdout.write(fallback);}" 2>/dev/null)}"
|
||||
```
|
||||
|
||||
This honors `CLAUDE_MEM_WORKER_PORT` env, then `~/.claude-mem/settings.json`, then falls back to the per-UID default `37700 + (uid % 100)` — matching how the worker itself picks its port. Required for multi-account setups (#2101) and any user who has overridden the default port (#2103).
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Determine the Project Name
|
||||
|
||||
Ask the user which project to analyze if not obvious from context. The project name is typically the directory name of the project (e.g., "tokyo", "my-app"). If the user says "this project", use the current working directory's basename.
|
||||
|
||||
**Worktree Detection:** Before using the directory basename, check if the current directory is a git worktree. In a worktree, the data source is the **parent project**, not the worktree directory itself. Run:
|
||||
|
||||
```bash
|
||||
git_dir=$(git rev-parse --git-dir 2>/dev/null)
|
||||
git_common_dir=$(git rev-parse --git-common-dir 2>/dev/null)
|
||||
if [ "$git_dir" != "$git_common_dir" ]; then
|
||||
# We're in a worktree — resolve the parent project name
|
||||
parent_project=$(basename "$(dirname "$git_common_dir")")
|
||||
echo "Worktree detected. Parent project: $parent_project"
|
||||
else
|
||||
parent_project=$(basename "$PWD")
|
||||
fi
|
||||
echo "$parent_project"
|
||||
```
|
||||
|
||||
If a worktree is detected, use `$parent_project` (the basename of the parent repo) as the project name for all API calls. Inform the user: "Detected git worktree. Using parent project '[name]' as the data source."
|
||||
|
||||
### Step 2: Fetch the Full Timeline
|
||||
|
||||
Use Bash to fetch the complete timeline from the claude-mem worker API:
|
||||
|
||||
```bash
|
||||
curl -s "http://localhost:${WORKER_PORT}/api/context/inject?project=PROJECT_NAME&full=true"
|
||||
```
|
||||
|
||||
This returns the entire compressed timeline -- every observation, session boundary, and summary across the project's full history. The response is pre-formatted markdown optimized for LLM consumption.
|
||||
|
||||
**Token estimates:** The full timeline size depends on the project's history:
|
||||
- Small project (< 1,000 observations): ~20-50K tokens
|
||||
- Medium project (1,000-10,000 observations): ~50-300K tokens
|
||||
- Large project (10,000-35,000 observations): ~300-750K tokens
|
||||
|
||||
If the response is empty or returns an error, the worker may not be running or the project name may be wrong. Try `curl -s "http://localhost:${WORKER_PORT}/api/search?query=*&limit=1"` to verify the worker is healthy.
|
||||
|
||||
### Step 3: Estimate Token Count
|
||||
|
||||
Before proceeding, estimate the token count of the fetched timeline (roughly 1 token per 4 characters). Report this to the user:
|
||||
|
||||
```
|
||||
Timeline fetched: ~X observations, estimated ~Yk tokens.
|
||||
This analysis will consume approximately Yk input tokens + ~5-10k output tokens.
|
||||
Proceed? (y/n)
|
||||
```
|
||||
|
||||
Wait for user confirmation before continuing if the timeline exceeds 100K tokens.
|
||||
|
||||
### Step 4: Analyze with a Subagent
|
||||
|
||||
Deploy an Agent (using the Task tool) with the full timeline and the following analysis prompt. Pass the ENTIRE timeline as context to the agent. The agent should also be instructed to query the SQLite database at `~/.claude-mem/claude-mem.db` for the Token Economics section.
|
||||
|
||||
**Agent prompt:**
|
||||
|
||||
```
|
||||
You are a technical historian analyzing a software project's complete development timeline from claude-mem's persistent memory system. The timeline below contains every observation, session boundary, and summary recorded across the project's entire history.
|
||||
|
||||
You also have access to the claude-mem SQLite database at ~/.claude-mem/claude-mem.db. Use it to run queries for the Token Economics & Memory ROI section. The database has an "observations" table with columns: id, memory_session_id, project, text, type, title, subtitle, facts, narrative, concepts, files_read, files_modified, prompt_number, discovery_tokens, created_at, created_at_epoch, source_tool, source_input_summary.
|
||||
|
||||
Write a comprehensive narrative report titled "Journey Into [PROJECT_NAME]" that covers:
|
||||
|
||||
## Required Sections
|
||||
|
||||
1. **Project Genesis** -- When and how the project started. What were the first commits, the initial vision, the founding technical decisions? What problem was being solved?
|
||||
|
||||
2. **Architectural Evolution** -- How did the architecture change over time? What were the major pivots? Why did they happen? Trace the evolution from initial design through each significant restructuring.
|
||||
|
||||
3. **Key Breakthroughs** -- Identify the "aha" moments: when a difficult problem was finally solved, when a new approach unlocked progress, when a prototype first worked. These are the observations where the tone shifts from investigation to resolution.
|
||||
|
||||
4. **Work Patterns** -- Analyze the rhythm of development. Identify debugging cycles (clusters of bug fixes), feature sprints (rapid observation sequences), refactoring phases (architectural changes without new features), and exploration phases (many discoveries without changes).
|
||||
|
||||
5. **Technical Debt** -- Track where shortcuts were taken and when they were paid back. Identify patterns of accumulation (rapid feature work) and resolution (dedicated refactoring sessions).
|
||||
|
||||
6. **Challenges and Debugging Sagas** -- The hardest problems encountered. Multi-session debugging efforts, architectural dead-ends that required backtracking, platform-specific issues that took days to resolve.
|
||||
|
||||
7. **Memory and Continuity** -- How did persistent memory (claude-mem itself, if applicable) affect the development process? Were there moments where recalled context from prior sessions saved significant time or prevented repeated mistakes?
|
||||
|
||||
8. **Token Economics & Memory ROI** -- Quantitative analysis of how memory recall saved work:
|
||||
- Query the database directly for these metrics using `sqlite3 ~/.claude-mem/claude-mem.db`
|
||||
- Count total discovery_tokens across all observations (the original cost of all work)
|
||||
- Count sessions that had context injection available (sessions after the first)
|
||||
- Calculate the compression ratio: average discovery_tokens vs average read_tokens per observation
|
||||
- Identify the highest-value observations (highest discovery_tokens -- these are the most expensive decisions, bugs, and discoveries that memory prevents re-doing)
|
||||
- Identify explicit recall events (observations where source_tool contains "search", "smart_search", "get_observations", "timeline", or where narrative mentions "recalled", "from memory", "previous session")
|
||||
- Estimate passive recall savings: each session with context injection receives ~50 observations. Use a 30% relevance factor (conservative estimate that 30% of injected context prevents re-work). Savings = sessions_with_context × avg_discovery_value_of_50_obs_window × 0.30
|
||||
- Estimate explicit recall savings: ~10K tokens per explicit recall query
|
||||
- Calculate net ROI: total_savings / total_read_tokens_invested
|
||||
- Present as a table with monthly breakdown
|
||||
- Highlight the top 5 most expensive observations by discovery_tokens -- these represent the highest-value memories in the system (architecture decisions, hard bugs, implementation plans that cost 100K+ tokens to produce originally)
|
||||
|
||||
Use these SQL queries as a starting point:
|
||||
```sql
|
||||
-- Total discovery tokens
|
||||
SELECT SUM(discovery_tokens) FROM observations WHERE project = 'PROJECT_NAME';
|
||||
|
||||
-- Sessions with context available (not the first session)
|
||||
SELECT COUNT(DISTINCT memory_session_id) FROM observations WHERE project = 'PROJECT_NAME';
|
||||
|
||||
-- Average tokens per observation
|
||||
SELECT AVG(discovery_tokens) as avg_discovery, AVG(LENGTH(title || COALESCE(subtitle,'') || COALESCE(narrative,'') || COALESCE(facts,'')) / 4) as avg_read FROM observations WHERE project = 'PROJECT_NAME' AND discovery_tokens > 0;
|
||||
|
||||
-- Top 5 most expensive observations (highest-value memories)
|
||||
SELECT id, title, discovery_tokens FROM observations WHERE project = 'PROJECT_NAME' ORDER BY discovery_tokens DESC LIMIT 5;
|
||||
|
||||
-- Monthly breakdown
|
||||
SELECT strftime('%Y-%m', created_at) as month, COUNT(*) as obs, SUM(discovery_tokens) as total_discovery, COUNT(DISTINCT memory_session_id) as sessions FROM observations WHERE project = 'PROJECT_NAME' GROUP BY month ORDER BY month;
|
||||
|
||||
-- Explicit recall events
|
||||
SELECT COUNT(*) FROM observations WHERE project = 'PROJECT_NAME' AND (source_tool LIKE '%search%' OR source_tool LIKE '%timeline%' OR source_tool LIKE '%get_observations%' OR narrative LIKE '%recalled%' OR narrative LIKE '%from memory%' OR narrative LIKE '%previous session%');
|
||||
```
|
||||
|
||||
9. **Timeline Statistics** -- Quantitative summary:
|
||||
- Date range (first observation to last)
|
||||
- Total observations and sessions
|
||||
- Breakdown by observation type (features, bug fixes, discoveries, decisions, changes)
|
||||
- Most active days/weeks
|
||||
- Longest debugging sessions
|
||||
|
||||
10. **Lessons and Meta-Observations** -- What patterns emerge from the full history? What would a new developer learn about this codebase from reading the timeline? What recurring themes or principles guided development?
|
||||
|
||||
## Writing Style
|
||||
|
||||
- Write as a technical narrative, not a list of bullet points
|
||||
- Use specific observation IDs and timestamps when referencing events (e.g., "On Dec 14 (#26766), the root cause was finally identified...")
|
||||
- Connect events across time -- show how early decisions created later consequences
|
||||
- Be honest about struggles and dead ends, not just successes
|
||||
- Target 3,000-6,000 words depending on project size
|
||||
- Use markdown formatting with headers, emphasis, and code references where appropriate
|
||||
|
||||
## Important
|
||||
|
||||
- Analyze the ENTIRE timeline chronologically -- do not skip early history
|
||||
- Look for narrative arcs: problem -> investigation -> solution
|
||||
- Identify turning points where the project's direction fundamentally changed
|
||||
- Note any observations about the development process itself (tooling, workflow, collaboration patterns)
|
||||
|
||||
Here is the complete project timeline:
|
||||
|
||||
[TIMELINE CONTENT GOES HERE]
|
||||
```
|
||||
|
||||
### Step 5: Save the Report
|
||||
|
||||
Save the agent's output as a markdown file. Default location:
|
||||
|
||||
```
|
||||
./journey-into-PROJECT_NAME.md
|
||||
```
|
||||
|
||||
Or if the user specified a different output path, use that instead.
|
||||
|
||||
### Step 6: Report Completion
|
||||
|
||||
Tell the user:
|
||||
- Where the report was saved
|
||||
- The approximate token cost (input timeline + output report)
|
||||
- The date range covered
|
||||
- Number of observations analyzed
|
||||
|
||||
## Error Handling
|
||||
|
||||
- **Empty timeline:** "No observations found for project 'X'. Check the project name with: `curl -s \"http://localhost:${WORKER_PORT}/api/search?query=*&limit=1\"`"
|
||||
- **Worker not running:** "The claude-mem worker is not responding on port ${WORKER_PORT}. Start it with your usual method or check `ps aux | grep worker-service`."
|
||||
- **Timeline too large:** For projects with 50,000+ observations, the timeline may exceed context limits. Suggest using date range filtering: `curl -s "http://localhost:${WORKER_PORT}/api/context/inject?project=X&full=true"` -- the current endpoint returns all observations; for extremely large projects, the user may want to analyze in time-windowed segments.
|
||||
|
||||
## Example
|
||||
|
||||
User: "Write a journey report for the tokyo project"
|
||||
|
||||
1. Fetch: `curl -s "http://localhost:${WORKER_PORT}/api/context/inject?project=tokyo&full=true"`
|
||||
2. Estimate: "Timeline fetched: ~34,722 observations, estimated ~718K tokens. Proceed?"
|
||||
3. User confirms
|
||||
4. Deploy analysis agent with full timeline
|
||||
5. Save to `./journey-into-tokyo.md`
|
||||
6. Report: "Report saved. Analyzed 34,722 observations spanning Oct 2025 - Mar 2026 (~718K input tokens, ~8K output tokens)."
|
||||
63
skills/version-bump/SKILL.md
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
name: claude-code-plugin-release
|
||||
description: Automated semantic versioning and release workflow for Claude Code plugins. Handles version increments across package.json, marketplace.json, plugin.json manifests, npm publishing (so `npx claude-mem@X.Y.Z` resolves), build verification, git tagging, GitHub releases, and changelog generation.
|
||||
---
|
||||
|
||||
# Version Bump & Release Workflow
|
||||
|
||||
**IMPORTANT:** Plan and write detailed release notes before starting.
|
||||
|
||||
**CRITICAL:** Commit EVERYTHING (including build artifacts). At the end of this workflow, NOTHING should be left uncommitted or unpushed. Run `git status` at the end to verify.
|
||||
|
||||
## Preparation
|
||||
|
||||
1. **Analyze**: Determine if the change is **PATCH** (bug fixes), **MINOR** (features), or **MAJOR** (breaking).
|
||||
2. **Environment**: Identify repository owner/name from `git remote -v`.
|
||||
3. **Paths — every file that carries the version string**:
|
||||
- `package.json` — **the npm/npx-published version** (`npx claude-mem@X.Y.Z` resolves from this)
|
||||
- `plugin/package.json` — bundled plugin runtime deps
|
||||
- `.claude-plugin/marketplace.json` — version inside `plugins[0].version`
|
||||
- `.claude-plugin/plugin.json` — top-level Claude-plugin manifest
|
||||
- `plugin/.claude-plugin/plugin.json` — bundled Claude-plugin manifest
|
||||
- `.codex-plugin/plugin.json` — Codex-plugin manifest
|
||||
- `openclaw/openclaw.plugin.json` — OpenClaw plugin manifest
|
||||
|
||||
Verify coverage before editing: `git grep -l "\"version\": \"<OLD>\""` should list all seven. If a new manifest has been added since this doc was last updated, update this list.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Update**: Increment the version string in every path above. Do NOT touch `CHANGELOG.md` — it's regenerated.
|
||||
2. **Verify**: `git grep -n "\"version\": \"<NEW>\""` — confirm all seven files match. `git grep -n "\"version\": \"<OLD>\""` — should return zero hits.
|
||||
3. **Build**: `npm run build` to regenerate artifacts.
|
||||
4. **Commit**: `git add -A && git commit -m "chore: bump version to X.Y.Z"`.
|
||||
5. **Tag**: `git tag -a vX.Y.Z -m "Version X.Y.Z"`.
|
||||
6. **Push**: `git push origin main && git push origin vX.Y.Z`.
|
||||
7. **Publish to npm** (this is what makes `npx claude-mem@X.Y.Z` work):
|
||||
```bash
|
||||
npm publish
|
||||
```
|
||||
The `prepublishOnly` script re-runs `npm run build` automatically. Confirm publish succeeded:
|
||||
```bash
|
||||
npm view claude-mem@X.Y.Z version # should print X.Y.Z
|
||||
```
|
||||
Alternative: `npm run release:patch` / `release:minor` / `release:major` invokes `np` and handles tag+push+publish in one shot — use ONLY if you skipped steps 4–6, otherwise `np` will error on the existing tag.
|
||||
8. **GitHub release**: `gh release create vX.Y.Z --title "vX.Y.Z" --notes "RELEASE_NOTES"`.
|
||||
9. **Changelog**: Regenerate via the project's changelog script:
|
||||
```bash
|
||||
npm run changelog:generate
|
||||
```
|
||||
(Runs `node scripts/generate-changelog.js`, which pulls releases from the GitHub API and rewrites `CHANGELOG.md`.)
|
||||
10. **Sync changelog**: Commit and push the updated `CHANGELOG.md`.
|
||||
11. **Notify**: `npm run discord:notify vX.Y.Z` if applicable.
|
||||
12. **Finalize**: `git status` — working tree must be clean.
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] All seven config files have matching versions
|
||||
- [ ] `git grep` for old version returns zero hits
|
||||
- [ ] `npm run build` succeeded
|
||||
- [ ] Git tag created and pushed
|
||||
- [ ] **`npm publish` succeeded and `npm view claude-mem@X.Y.Z version` confirms it** (so `npx claude-mem@X.Y.Z` resolves)
|
||||
- [ ] GitHub release created with notes
|
||||
- [ ] `CHANGELOG.md` updated and pushed
|
||||
- [ ] `git status` shows clean tree
|
||||
34
skills/version-bump/scripts/generate_changelog.js
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env node
|
||||
const fs = require('fs');
|
||||
|
||||
function generate() {
|
||||
try {
|
||||
const input = fs.readFileSync(0, 'utf8');
|
||||
if (!input || input.trim() === '') {
|
||||
process.stderr.write('No input received on stdin
|
||||
');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const releases = JSON.parse(input);
|
||||
const lines = ['# Changelog', '', 'All notable changes to this project.', ''];
|
||||
|
||||
releases.slice(0, 50).forEach(r => {
|
||||
const date = r.published_at.split('T')[0];
|
||||
lines.push(`## [${r.tag_name}] - ${date}`);
|
||||
lines.push('');
|
||||
if (r.body) lines.push(r.body.trim());
|
||||
lines.push('');
|
||||
});
|
||||
|
||||
process.stdout.write(lines.join('
|
||||
') + '
|
||||
');
|
||||
} catch (err) {
|
||||
process.stderr.write(`Error generating changelog: ${err.message}
|
||||
`);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
generate();
|
||||
BIN
ui/assets/fonts/monaspace-radon-var.woff
Normal file
BIN
ui/assets/fonts/monaspace-radon-var.woff2
Normal file
BIN
ui/claude-mem-logo-for-dark-mode.webp
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
ui/claude-mem-logo-stylized.png
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
ui/claude-mem-logomark.webp
Normal file
|
After Width: | Height: | Size: 42 KiB |
8
ui/icon-thick-completed.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated by Pixelmator Pro 3.6.17 -->
|
||||
<svg width="328" height="327" viewBox="0 0 328 327" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="icon-thick-completed">
|
||||
<path id="Path" fill="#ee9443" stroke="none" d="M 102.143021 15.109985 C 124.399521 6.597839 146.838608 0.814148 170.500641 1.142517 C 178.716675 1.256592 184.928009 4.778809 188.221222 12.564148 C 192.131836 21.809204 187.675385 32.968201 178.308319 36.536194 C 174.499176 37.987122 170.210297 39.14447 166.207672 38.960144 C 145.084 37.987 126.251495 45.816895 108.085022 54.783447 C 101.013763 58.273621 94.376038 64.903625 90.303864 71.747437 C 81.249969 86.963745 68.683197 98.688721 56.224823 110.687927 C 45.194839 121.311401 37.752762 133.868042 36.270981 149.298157 C 35.333755 159.057739 38.918953 168.018066 43.269821 176.487732 C 48.642563 186.946594 49.607574 198.020325 49.348831 209.462341 C 49.229034 214.759338 49.297974 220.136719 50.076202 225.359192 C 51.13385 232.456848 55.144928 237.91803 61.378815 241.596008 C 63.383698 242.778992 65.430359 243.940247 67.574722 244.829956 C 83.763855 251.546753 97.238754 261.650269 108.032684 275.601196 C 114.748367 284.281067 123.325409 290.831177 135.135101 289.901917 C 140.699997 289.464111 146.271561 287.914001 151.622803 286.192444 C 165.21907 281.818298 178.989075 280.611023 193.001343 283.258057 C 210.095184 286.487305 222.947113 280.610168 232.088593 265.940796 C 239.656372 253.796753 250.168091 244.837585 262.412537 237.534668 C 267.629059 234.42334 272.271271 230.168091 276.676208 225.916443 C 284.850586 218.026672 283.26178 207.977478 281.815948 198.196411 C 280.216736 187.377869 282.084747 177.171692 285.330505 166.805542 C 287.769135 159.01709 289.746948 150.571228 289.354858 142.543823 C 288.898254 133.196045 281.958679 126.555603 274.813629 120.722412 C 262.907257 111.002075 253.400421 99.691772 251.609131 83.625122 C 251.074951 78.833923 250.541107 74.030701 250.329742 69.21875 C 250.08316 63.604675 247.759796 59.19043 243.079437 56.287903 C 238.852234 53.666321 234.389679 51.398193 229.921539 49.196228 C 216.848724 42.753784 213.950043 27.349976 224.305084 18.449036 C 229.938202 13.606995 236.862122 13.132141 243.201904 15.625 C 262.293976 23.132446 277.067566 35.448792 283.134338 55.910461 C 284.725006 61.275391 285.178131 67.024841 285.728149 72.639404 C 286.461243 80.122681 289.553528 86.273743 294.768616 91.602539 C 301.394287 98.372742 308.7612 104.675049 314.152252 112.343567 C 326.11319 129.357178 329.543671 148.192627 322.225342 168.220764 C 318.505066 178.402039 316.802551 188.827332 317.877289 199.604309 C 320.515808 226.062927 309.154083 246.001892 289.051666 261.865967 C 283.568481 266.193054 277.323334 269.67511 272.349426 274.495911 C 266.423248 280.239441 261.273407 286.837769 256.165253 293.361694 C 240.566223 313.284546 220.852509 323.559692 195.203339 318.922852 C 181.849915 316.508789 169.312592 318.014526 156.549927 322.340332 C 128.791275 331.749023 105.282944 322.742676 84.499405 304.061523 C 77.946136 298.171021 72.037766 291.539246 65.29071 285.896729 C 61.008255 282.315308 55.838928 279.71698 50.867279 277.050842 C 31.686432 266.764404 18.30217 251.817322 13.808723 230.139771 C 12.550957 224.072021 12.645752 217.592896 13.001595 211.352783 C 13.513565 202.374756 12.749832 193.795959 9.017151 185.506409 C 4.141502 174.678528 0.361565 163.461487 0.147591 151.46405 C -0.268478 128.135742 8.54351 108.351929 24.183197 91.418823 C 28.588943 86.648743 33.638489 82.456482 37.878265 77.55426 C 43.191925 71.4104 48.86821 65.311707 52.818863 58.30835 C 64.201996 38.129456 80.781326 24.276245 102.143021 15.109985 Z"/>
|
||||
<path id="path1" fill="#ee9443" stroke="none" d="M 177.816132 152.815186 C 191.282013 135.84552 204.424072 119.072571 217.830627 102.513794 C 222.283875 97.013489 228.385834 94.391418 235.566132 95.916077 C 243.398834 97.579224 248.658691 102.725464 249.203705 110.510254 C 249.534729 115.238892 248.017639 120.987549 245.313232 124.874084 C 236.577667 137.427856 227.077362 149.466003 217.560394 161.455688 C 201.420685 181.788879 185.291229 202.139771 168.680969 222.086487 C 157.115097 235.975647 140.902039 236.160095 129.093536 222.542542 C 123.268402 215.825012 118.55864 208.046204 113.969971 200.373413 C 107.730713 189.940674 101.93927 179.349426 93.154266 170.614319 C 84.420303 161.930115 82.955887 151.667053 88.21373 143.463806 C 94.485153 133.679199 108.943008 130.570801 117.990814 138.286194 C 123.506119 142.989258 127.616531 149.584167 131.544327 155.840088 C 136.043503 163.006226 139.188934 171.028992 143.759659 178.141602 C 148.237061 185.108887 151.258911 185.276123 156.6017 179.125671 C 163.907013 170.715942 170.625488 161.796448 177.816132 152.815186 Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
8
ui/icon-thick-investigated.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated by Pixelmator Pro 3.6.17 -->
|
||||
<svg width="295" height="339" viewBox="0 0 295 339" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="icon-thick-investigated">
|
||||
<path id="Path" fill="#ee9443" stroke="none" d="M 229.062531 225.062622 C 215.534576 231.309692 201.815216 234.810913 187.17041 233.883606 C 178.072418 233.307495 169.25061 234.487427 160.747803 237.888306 C 145.74324 243.889832 130.520584 242.407349 115.103485 239.659485 C 109.520187 238.664368 103.463379 238.559448 97.913162 239.599182 C 91.193512 240.858032 89.857742 246.409546 94.159653 251.608093 C 108.427109 268.849121 103.655029 289.726685 82.846451 298.619263 C 75.620636 301.707153 67.625809 303.104218 59.888016 304.85791 C 50.282639 307.034882 42.764755 311.295197 38.593872 320.941223 C 36.690849 325.342377 33.301422 329.377228 29.783783 332.738495 C 24.606377 337.685913 18.155121 338.136719 11.659698 335.23761 C 5.209885 332.358826 1.559677 327.350647 0.947311 320.210785 C 0.345543 313.194427 1.801857 306.664551 5.316139 300.567902 C 15.429329 283.023499 30.555946 273.203247 50.673309 270.968628 C 53.301224 270.676636 55.950958 270.209106 58.475998 269.444458 C 62.971725 268.08313 63.602158 266.009277 60.836716 262.152527 C 58.420456 258.782776 55.391068 255.764587 53.461945 252.14856 C 44.128372 234.653442 57.2845 217.667847 72.544739 212.954956 C 79.150009 210.915039 86.189026 210.282532 93.028107 208.995117 C 95.427124 208.543579 97.817413 208.045532 101.645859 207.283081 C 99.327225 204.565735 97.793701 202.596069 96.082932 200.794678 C 90.028107 194.41925 83.471466 188.463745 77.908737 181.689087 C 64.844833 165.779236 59.591553 146.643127 58.248764 126.666382 C 56.229111 96.620117 63.289093 68.849243 82.57254 44.979126 C 101.736938 21.256409 126.399551 6.920532 156.699341 3.060181 C 182.104431 -0.176514 207.001221 1.754333 230.040924 14.175964 C 263.505798 32.21814 284.351563 60.22937 290.406555 97.555054 C 294.291138 121.501221 294.880157 146.098694 284.244659 169.16748 C 272.668884 194.275696 254.271667 212.81134 229.062531 225.062622 M 244.872559 167.361755 C 246.057373 165.964722 247.295471 164.60907 248.418304 163.163879 C 255.00592 154.684448 259.361908 145.55304 258.956238 134.328857 C 258.616425 124.927002 259.09082 115.463867 259.744476 106.06543 C 260.732086 91.865112 257.144501 79.826782 245.442902 70.771606 C 239.933441 66.508179 235.032104 61.463989 229.57312 57.128784 C 223.865021 52.595825 218.260376 47.610107 211.829315 44.375488 C 197.484528 37.160461 182.032745 35.63031 166.134003 37.822998 C 133.72908 42.292175 111.445908 59.614502 99.478043 90.057617 C 88.486908 118.016174 92.658325 152.151917 119.026199 172.237122 C 128.423401 179.395264 135.325684 188.393066 138.320084 199.993469 C 139.583832 204.889343 142.883499 205.848633 147.055222 204.817383 C 150.593048 203.942871 153.99028 202.495239 157.443268 201.282898 C 166.797211 197.998596 176.204132 196.039429 186.293915 197.625366 C 200.123383 199.799133 212.669403 197.077393 223.127808 186.812866 C 229.893097 180.172974 237.269012 174.155273 244.872559 167.361755 Z"/>
|
||||
<path id="path1" fill="#ee9544" stroke="none" d="M 194.897339 64.336914 C 206.583221 62.468262 215.635437 67.409302 224.302734 73.749695 C 238.771729 84.334229 245.725098 99.028931 246.693542 116.427734 C 247.490143 130.739807 244.072723 144.22644 234.096741 155.157959 C 231.991882 157.464417 228.721863 159.032837 225.692261 160.098389 C 220.342163 161.980103 215.459534 160.512878 211.675232 156.238647 C 208.011444 152.100525 207.832611 147.407654 209.515137 142.262695 C 211.309143 136.776733 213.460236 131.214111 213.99173 125.547668 C 215.227661 112.370483 209.723846 103.750244 197.700653 98.094055 C 196.345306 97.456421 195.014587 96.766052 193.65506 96.137695 C 186.781982 92.961365 182.817017 87.529785 183.136108 80.035217 C 183.449127 72.68335 187.378235 67.224609 194.897339 64.336914 Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
12
ui/icon-thick-learned.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated by Pixelmator Pro 3.6.17 -->
|
||||
<svg width="353" height="364" viewBox="0 0 353 364" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="icon-thick-learned">
|
||||
<path id="Path" fill="#ee9443" stroke="none" d="M 271.450684 172.584045 C 273.343445 194.098389 270.338623 213.959534 256.262817 230.760376 C 252.104553 235.723694 247.645813 240.591919 242.633789 244.650269 C 232.838013 252.582214 229.652893 262.937012 229.050354 274.968018 C 228.661987 282.721924 226.516724 290.377747 225.94397 298.135498 C 225.449341 304.836121 225.212036 311.767395 226.361206 318.334229 C 228.871155 332.677612 225.07959 343.24469 212.557495 350.703888 C 207.639648 353.633392 202.04071 356.192383 196.458435 357.085266 C 181.075195 359.545837 165.563293 361.335999 150.04187 362.707977 C 145.997742 363.06546 141.407715 361.596954 137.642151 359.778809 C 131.365173 356.747955 128.71936 350.93808 129.12146 344.070404 C 129.577759 336.276611 133.243103 330.086884 140.756226 327.561218 C 146.495178 325.631989 152.669922 324.627563 158.727783 324.105865 C 167.84021 323.321045 177.024475 323.407349 186.169434 322.949463 C 191.91217 322.661987 195.344666 320.123352 194.87439 316.190308 C 194.651306 314.324951 192.947021 311.528442 191.41864 311.149231 C 187.805725 310.252808 183.879272 310.225464 180.109924 310.423889 C 164.817383 311.229126 149.53717 312.139893 134.361572 309.125916 C 126.080383 307.481201 121.892212 303.087891 122.043091 294.73584 C 122.186279 286.804382 123.350037 278.892029 124.047974 270.969788 C 125.085876 259.190063 119.776184 250.632141 110.74762 243.601074 C 87.049316 225.145813 79.709412 200.221619 82.73822 171.335754 C 84.429932 155.201782 90.26416 140.769165 100.286255 127.994385 C 116.374084 107.487671 136.94043 94.488403 162.88501 90.460144 C 210.062683 83.135254 254.294556 110.859192 268.11322 156.55188 C 269.643311 161.611084 270.288879 166.937805 271.450684 172.584045 M 229.007874 152.54834 C 226.673096 149.528137 224.618286 146.232605 221.960144 143.530518 C 196.655273 117.807373 141.948364 118.612122 121.780273 161.978516 C 113.200989 180.426147 114.518372 198.947449 131.426208 214.280396 C 135.984802 218.414429 140.783691 222.509155 144.377563 227.422607 C 148.632446 233.239502 152.880615 239.557251 154.981812 246.325378 C 157.495972 254.423828 157.874573 263.211731 158.882996 271.735962 C 159.210083 274.501221 159.49585 276.862671 162.831787 276.897949 C 170.791077 276.981995 178.7771 277.295837 186.704102 276.778931 C 192.626343 276.3927 193.906555 274.412476 194.184692 268.340576 C 195.02771 249.935364 201.677063 234.233765 215.025269 221.240723 C 221.435242 215.001343 228.310364 208.625122 232.63623 200.98645 C 241.793823 184.815918 238.45636 168.581177 229.007874 152.54834 Z"/>
|
||||
<path id="path1" fill="#ee9544" stroke="none" d="M 158.952759 45.972473 C 158.945435 36.99884 158.837341 28.518555 158.958923 20.041565 C 159.11438 9.20166 166.629822 1.291138 176.675232 1.163452 C 187.241089 1.029175 194.853088 8.555664 195.05896 19.830017 C 195.268127 31.288025 195.33667 42.761047 194.987427 54.212891 C 194.707092 63.401917 187.224182 69.711426 177.172668 69.998657 C 167.616699 70.271729 160.188049 64.1026 159.223083 54.933838 C 158.928345 52.13324 159.032532 49.290649 158.952759 45.972473 Z"/>
|
||||
<path id="path2" fill="#ee9545" stroke="none" d="M 240.151184 71.347107 C 246.59021 62.467346 252.821167 53.886292 259.300049 45.496765 C 262.225586 41.708618 265.23053 37.781555 268.930237 34.835205 C 275.682922 29.457458 285.254028 30.138916 290.921997 35.658813 C 297.144104 41.718323 298.258545 50.611267 292.924316 57.851807 C 285.630554 67.752258 278.067322 77.481018 270.14032 86.879028 C 264.368225 93.722168 255.518311 94.755554 247.930908 90.422729 C 241.237549 86.600525 238.141602 79.260254 240.151184 71.347107 Z"/>
|
||||
<path id="path3" fill="#ee9545" stroke="none" d="M 94.416748 92.876099 C 90.227112 90.332947 85.729736 88.465088 82.824646 85.186401 C 75.340088 76.739258 68.420776 67.77478 61.542114 58.812439 C 55.871338 51.42395 56.928345 40.84552 63.497803 35.31958 C 70.645935 29.306885 81.690857 29.472839 87.88501 36.621399 C 96.041443 46.034546 103.694641 55.912842 111.109131 65.92804 C 115.180664 71.427734 115.128906 77.757874 111.843018 83.856567 C 108.197205 90.623291 102.277527 93.223328 94.416748 92.876099 Z"/>
|
||||
<path id="path4" fill="#ee9545" stroke="none" d="M 327.237671 111.158447 C 339.058167 106.002991 350.032959 112.776855 351.524292 123.386963 C 352.453918 130.000122 348.8396 138.183655 342.590576 140.844788 C 331.583923 145.53186 320.502625 150.078064 309.278198 154.209351 C 298.968567 158.004028 290.227539 154.146057 286.725098 144.919678 C 283.136841 135.467163 287.600891 126.236633 297.930237 122.201233 C 307.530823 118.450562 317.217163 114.919128 327.237671 111.158447 Z"/>
|
||||
<path id="path5" fill="#ee9545" stroke="none" d="M 60.526978 150.6521 C 54.4599 155.095764 48.345764 154.328491 42.21698 151.939087 C 32.62677 148.200134 23.100098 144.298462 13.517639 140.539246 C 3.66449 136.673767 -0.680115 127.512268 2.923706 118.00708 C 6.397583 108.844604 15.713013 104.776245 25.429688 108.514954 C 36.124695 112.630127 46.721008 117.005798 57.320618 121.364258 C 68.805969 126.086914 70.452515 143.709595 60.526978 150.6521 Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
8
ui/icon-thick-next-steps.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated by Pixelmator Pro 3.6.17 -->
|
||||
<svg width="357" height="313" viewBox="0 0 357 313" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="icon-thick-next-steps">
|
||||
<path id="Path" fill="#ee9443" stroke="none" d="M 200.028198 247.999878 C 203.073303 243.603943 206.331726 239.728516 208.700806 235.36969 C 218.712036 216.950195 234.256958 205.057983 253.007629 196.675293 C 261.606873 192.830933 269.038208 187.471008 275.130615 180.018494 C 279.957092 174.114502 285.902893 169.137756 291.181824 163.587646 C 295.72467 158.811523 295.22168 156.284851 290.264404 152.069214 C 283.299316 146.146301 277.047729 139.305542 269.71405 133.914185 C 259.545471 126.438721 248.661316 119.935608 238.07312 113.032043 C 225.191956 104.633545 215.358826 93.802551 209.51947 79.301819 C 205.608276 69.589478 198.034119 62.773132 189.394409 57.04071 C 183.433105 53.085449 177.413147 49.111145 171.991882 44.475891 C 164.665039 38.211365 161.635071 30.016052 163.611877 20.313538 C 165.687683 10.125061 172.308899 4.53772 182.131592 2.495544 C 188.943298 1.079346 195.326477 3.127258 200.339233 7.435852 C 217.818848 22.459961 236.578552 36.260437 246.636597 58.263916 C 252.342773 70.746948 262.274841 79.434937 274.695679 85.635864 C 288.199707 92.377563 299.427551 101.974426 309.528381 113.447876 C 316.54425 121.417175 326.085815 127.183044 334.598694 133.805176 C 338.40448 136.765747 342.611755 139.21698 346.364075 142.238159 C 356.84729 150.679016 358.031616 163.997253 348.114685 173.076172 C 340.322327 180.209961 331.37793 186.165588 322.568237 192.083252 C 315.148804 197.066956 308.533325 202.696533 303.18103 209.862244 C 296.429993 218.900635 287.445496 225.226379 277.306519 229.781006 C 259.982971 237.562988 247.425415 250.171631 237.15509 265.963928 C 226.294312 282.664246 212.651855 297.092407 196.101624 308.432434 C 189.276978 313.108704 181.674683 314.306396 173.818054 310.920776 C 161.332764 305.540527 157.06665 286.928406 166.708801 276.03363 C 172.108887 269.932007 179.637939 265.744568 186.038635 260.48877 C 190.777893 256.597168 195.244507 252.373657 200.028198 247.999878 Z"/>
|
||||
<path id="path1" fill="#ee9443" stroke="none" d="M 182.439697 114.401611 C 192.385376 116.187073 200.552246 120.709717 208.724854 125.747681 C 218.74353 131.923584 229.402832 137.083313 239.908691 142.440063 C 251.755737 148.480591 255.919739 160.852478 249.511841 171.751831 C 245.387085 178.7677 234.322571 182.39679 224.101135 180.377991 C 214.380859 178.458069 206.876282 172.931091 199.753052 166.476563 C 195.467896 162.593628 191.099548 158.587891 186.145752 155.709106 C 179.250549 151.702148 175.2099 152.796387 169.784729 158.514954 C 163.854492 164.765686 158.470825 171.658264 151.925659 177.175903 C 139.299438 187.819885 121.911133 184.144409 111.615967 174.971741 C 107.548035 171.347229 104.287842 166.814453 100.674744 162.682129 C 99.471436 161.305847 98.377991 159.829102 97.126526 158.499878 C 88.845886 149.704407 80.265747 149.49585 71.393799 157.672119 C 66.258667 162.40448 61.163147 167.222351 55.667725 171.512207 C 45.10083 179.76123 32.94519 183.092163 19.60321 181.742432 C 10.085205 180.779602 2.704285 174.59082 0.872681 166.334473 C -1.18573 157.055786 1.656006 148.790833 8.964783 144.524475 C 11.899231 142.811523 15.435059 141.362427 18.758667 141.219116 C 31.253113 140.680237 40.451477 134.163147 49.517212 126.429016 C 55.239807 121.546997 61.704163 116.61322 68.694397 114.319214 C 86.340393 108.528625 102.878235 111.76001 117.033264 124.4021 C 120.881348 127.838867 124.439758 131.600647 128.299622 135.023376 C 133.139954 139.31543 136.620483 139.065918 141.27771 134.542419 C 144.860046 131.062988 148.452271 127.588074 152.164551 124.249634 C 160.650452 116.618225 170.508057 112.989624 182.439697 114.401611 Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |