مواصفة مخطط المُنتَجات
مخطط البيانات الأمامية المرجعي بصيغة YAML والحقول المطلوبة لكل أنواع المُنتَجات في شجرة مصدر Apothem، مع قوالب لكل صنف وقواعد تحقّق.
قوالب البيانات الأمامية بصيغة YAML لكل صنف والحقول المطلوبة لكل مُنتَجات منظومة Apothem.
مصدر الحقيقة. العقد المقروء آليًا الذي تفرضه البوابة هو مخططات JSON Schema لكل صنف تحت
src/apothem/schemas/(agent.schema.json، وcommand.schema.json، وskill.schema.json، …). ويُعلِن مخطّطا المهارات والأوامرadditionalProperties: false، فيرفضان المفاتيح غير المعروفة؛ أما مخططات العوامل ونمط الإخراج والخطة فتُعلِنadditionalProperties: true. هذه الصفحة وfrontmatter-schema.mdxهما الإسقاطان المقروءان للبشر لتلك المخططات — تحمل هذه الصفحة القوالب والأمثلة المحلولة لكل صنف، ويحمل frontmatter-schema فهرس المفاتيح المطلوبة المُوجَز. وحيثما تخالف صفحةٌ مخططاتِ JSON Schema، تكون الغلبة للمخططات.
نظرة عامة
يجب أن تتضمّن كل المُنتَجات في شجرة مصدر Apothem (تحت src/apothem/
وسطح الإعداد الجذري) كتلة بيانات أمامية بصيغة YAML (بين فاصلَي ---)
بحقول إلزامية واختيارية خاصة بنوع المُنتَج. يُعرِّف هذا المستند المخطط المرجعي لكل
نوع.
القواعد العامة:
- البيانات الأمامية متوافقة مع YAML 1.2
- تستخدم كل القيم النصية علامات اقتباس مزدوجة، وتُكتب السلسلة الفارغة
"" - ترتيب الحقول: الحقول الإلزامية أولًا، ثم الحقول الاختيارية مُجمَّعة بحسب الصلة
- تستخدم التعليقات في البيانات الأمامية
#متبوعة بمسافة:# comment - يجب أن تكون قيم المسارات نسبية (بلا
/في البداية) وأن تستخدم الشرطات المائلة الأمامية (/) من أجل التوافق عبر المنصّات
اصطلاح ترقيم النسخ (أصناف المُنتَجات ذات النسخ — الأوامر، والمساعِدات، والمهارات، وCLAUDE.md):
versionدلالية (MAJOR.MINOR.PATCH). ارفع MAJOR للتغييرات الكاسرة في المخطط أو العقد؛ وMINOR للتغييرات الإضافية غير الكاسرة (حقول اختيارية جديدة، وأقسام إضافية، وأنماط مضادة إضافية)؛ وPATCH لتغيير سلوكي يُصحّح توجيهًا قائمًا دون كسر العقد.- لا تُغيّر إصلاحات الأخطاء المطبعية، وإصلاحات الروابط، والتنسيق، والتعديلات المقتصرة على التعليقات أو على الوثائق قيمةَ
version. ولا يرفعها إلا تغيير سلوكي. updatedهو تاريخ ISO 8601 (YYYY-MM-DD) لأحدث تعديل. يجب أن يتغيّر مع كل رفع لـversion، ويتغيّر أيضًا عند إصلاح خطأ مطبعي أو رابط لا يرفع الإصدار.- تبدأ القِطَع الجديدة عند
v0.Y.Z. وتدلّ الترقية إلىvX.Y.Zعلى أن عقد القِطعة مستقرّ بما يكفي ليكون التزامًا عامًّا. - حزم الخطط خارج هذا الاصطلاح. يرفع تصحيح خطأ مطبعي في حزمة خطّة رقمَ PATCH لإصدار الحزمة (من
vX.Y.ZإلىvX.Y.(Z+1))، ويُلحَق صفّ في سجلّ المراجعات. ويصف دليل المطوّر قاعدة حزمة الخطّة في قسم مراجعات حزمة الخطّة.
المخطط: القواعد
نمط المسار: src/apothem/rules/*.md
الغرض: تفويضات سلوكية وتوجيهات تشغيلية.
الحقول الإلزامية
---
name: "kebab-case-identifier"
description: "One-line description"
pathFilter: "**/*.py, **/*.toml"
alwaysApply: true | false
---| الحقل | النوع | الغرض | المثال |
|---|---|---|---|
name | string | مُعرِّف مقروء آليًا | "operational-mandates" |
description | string | وصف من سطر واحد للسجلّات | "Operational mandates CM-1–10" |
pathFilter | string | قائمة أنماط glob مفصولة بفواصل تُحدِّد نطاق قاعدة مُرشَّحة بالمسار؛ والسلسلة الفارغة ("") في القواعد الدائمة التفعيل | "**/*.py, **/*.toml" |
alwaysApply | boolean | true للقواعد الدائمة التفعيل (تُحمَّل في كل مكان)؛ وfalse للقواعد المُرشَّحة بالمسار (تُحمَّل عندما يطابق pathFilter) | true |
الحقول الاختيارية
لا تحمل القواعد أيّ حقول اختيارية في البيانات الأمامية، ولا تحمل كذلك — خلافًا لأصناف المُنتَجات الأخرى — حقول version / updated / scope / portability. الحقول الإلزامية الأربعة أعلاه هي عقد البيانات الأمامية الكامل للقاعدة الذي يفرضه frontmatter_grep.
المثال
---
name: "operational-mandates"
description: "Behavioral definitions for CM-1 through CM-10: violation indicators and recovery actions"
pathFilter: ""
alwaysApply: true
---
# Rule: Operational Mandates
...المخطط: الأوامر
نمط المسار: src/apothem/commands/*.md
الغرض: تعريفات أوامر الشرطة المائلة (/plan-execute، و/freshify، وغيرها).
الحقول الإلزامية
---
name: "command-name"
version: "MAJOR.MINOR.PATCH"
updated: "YYYY-MM-DD"
description: "What this command does"
argument-hint: "[argument-pattern]"
disable-model-invocation: true | false
portability: "universal"
allowed-tools: "Read, Glob, Grep"
---| الحقل | النوع | الغرض | المثال |
|---|---|---|---|
name | string | اسم الأمر (بلا / في البداية) | "plan-execute" |
version | string | نسخة دلالية | "X.Y.Z" |
updated | string (ISO 8601) | تاريخ آخر تحديث | "2026-04-20" |
description | string | وصف قصير | "Executes a phase with quality gates" |
argument-hint | string | نمط الاستخدام، أو "[args...]" إن لم يوجد | "[path/to/plan] [phase-id]" |
disable-model-invocation | boolean | إذا كانت القيمة true، فلا يبدأ الأمرَ إلا المُشغِّل؛ ولا يستدعيه النموذج من تلقاء نفسه أبدًا | true |
portability | string | تصنيف قابلية النقل عبر محوّلات أُطُر العمل | "universal" |
allowed-tools | string | الأدوات المُعتمَدة مسبقًا أثناء تشغيل الأمر: أدوات القراءة فقط، أما الأدوات ذات الآثار الجانبية فلا تُقبَل إلا بوصفها قواعد محدودة النطاق مثل Bash(git log *). يُرفَض حرف البدل "*" المجرّد | "Read, Glob, Grep" |
الحقول الاختيارية
لا تحمل الأوامر أيّ حقول اختيارية في البيانات الأمامية — الحقول الإلزامية الثمانية أعلاه هي عقد البيانات الأمامية الكامل للأمر الذي يفرضه command.schema.json (additionalProperties: false).
المثال
---
name: "plan-execute"
version: "X.Y.Z"
updated: "2026-04-20"
description: "Executes a specific phase from a Master Plan Suite with conformity checking and quality gates"
argument-hint: "[path/to/plan-suite/] [phase-id] [--dry-run]"
disable-model-invocation: true
portability: "universal"
allowed-tools: "Read, Glob, Grep"
---
# /plan-execute — Execute a Specific Phase
...المخطط: المساعِدات
نمط المسار:
src/apothem/agents/*.mdالغرض: تعريفات دائمة للمساعِدات (وتُسمّى أيضًا العاملين المُفوَّض إليهم) من أجل الاستكشاف المتوازي، والتدقيق، وبوابات الجودة.
الحقول الإلزامية
---
name: "agent-name"
version: "MAJOR.MINOR.PATCH"
updated: "YYYY-MM-DD"
description: "What this agent specializes in"
tools: "Tool1, Tool2, Tool3"
disallowedTools: "Write, Edit"
maxTurns: 20
effort: "high" | "medium" | "low"
---| الحقل | النوع | الغرض | المثال |
|---|---|---|---|
name | string | مُعرِّف المساعِد | "codebase-explorer" |
version | string | نسخة دلالية | "X.Y.Z" |
updated | string (ISO 8601) | تاريخ آخر تحديث | "2026-04-20" |
description | string | وصف التخصّص | "Deep codebase exploration" |
tools | string (مفصولة بفواصل) | الأدوات المسموح بها | "Read, Glob, Grep, Bash" |
disallowedTools | string (مفصولة بفواصل) | الأدوات المحظورة | "Write, Edit, TodoWrite" |
maxTurns | integer | الحدّ الأقصى لأدوار المحادثة (عادةً 5–20؛ وتتطلّب القيم التي تتجاوز 20 تعليق تبرير مُضمَّنًا في السطر) | 20 |
effort | enum | النطاق الحسابي | "high" |
الحقول الاختيارية
permissionMode: "default" # Permission handling
memory: user | project | local # Persistent-memory scope; omit for none
pattern: "Research" | "Audit" | "Implementation" | "Quality" # Agent team pattern
portability: "universal"المثال
---
name: "codebase-explorer"
version: "X.Y.Z"
updated: "2026-04-20"
description: "Deep codebase exploration — find patterns, trace dependencies, discover conventions, map architecture"
tools: "Read, Glob, Grep, Bash"
disallowedTools: "Write, Edit, TodoWrite"
maxTurns: 20
effort: "high"
permissionMode: "default"
portability: "universal"
---
You are a codebase exploration specialist...المخطط: المهارات
نمط المسار: src/apothem/skills/*/SKILL.md
الغرض: تعريفات تقنيات قابلة لإعادة الاستخدام مع إشارات اكتشاف وإجراءات تنفيذ.
الحقول الإلزامية
---
name: "skill-name"
version: "MAJOR.MINOR.PATCH"
updated: "YYYY-MM-DD"
description: "What this skill teaches"
archetype: "workflow-template"
userInvocable: true | false
disable-model-invocation: true | false
allowed-tools: "Read, Glob, Grep"
---| الحقل | النوع | الغرض | المثال |
|---|---|---|---|
name | string | مُعرِّف المهارة | "plan-suite" |
version | string | نسخة دلالية | "X.Y.Z" |
updated | string (ISO 8601) | تاريخ آخر تحديث | "2026-04-20" |
description | string | ما توفّره المهارة | "Master Plan Suite template" |
archetype | string | صنف الشكل، وهو مُعرِّف <class>-template بصيغة kebab-case | "workflow-template" |
userInvocable | boolean | إذا كانت القيمة true، يمكن للمستخدم طلب هذه المهارة صراحةً | false |
disable-model-invocation | boolean | إذا كانت القيمة true، فلا يُوصَل إلى المهارة إلا بالاستدعاء الصريح | true |
allowed-tools | string | الأدوات المُعتمَدة مسبقًا أثناء تشغيل المهارة: أدوات القراءة فقط، أما الأدوات ذات الآثار الجانبية فلا تُقبَل إلا بوصفها قواعد محدودة النطاق مثل Bash(git log *). يُرفَض حرف البدل "*" المجرّد | "Read, Glob, Grep" |
الحقول الاختيارية
argument-hint: "[args...]" # Usage pattern if userInvocableالمثال
---
name: "ecosystem-audit"
version: "X.Y.Z"
updated: "2026-04-20"
description: "Comprehensive blind audit of the apothem ecosystem"
archetype: "audit-template"
userInvocable: true
disable-model-invocation: false
allowed-tools: "Read, Glob, Grep, Agent, TodoWrite"
argument-hint: "[--focus area] [--fix]"
---
## Purpose
...المخطط: الخطّافات
نمط المسار: كتلة hooks في settings.json إضافةً إلى تطبيقات
Python تحت src/apothem/hooks/.
الغرض: إعلان مدقّقات تُطلِقها الأحداث ومعالِجات لإدارة الحالة يستدعيها المضيف عند نقاط محدّدة بوضوح في دورة الحياة.
مخطط ملف الإعدادات
يربط المفتاح العلوي hooks أسماء الأحداث بمصفوفات من كتل المُطابِقات:
"hooks": {
"<EventName>": [
{
"matcher": "<pattern>",
"hooks": [
{
"type": "command",
"command": "${PYTHON_BIN}",
"args": ["${HARNESS_ROOT}/.apothem/support/hooks/dispatch.py", "<EventName>", "<message-name>"],
"timeout": <seconds>,
"statusMessage": "<short human-readable label>"
}
]
}
]
}الصيغة -m apothem.hooks.dispatch مخصّصة للتطوير من نسخة مسحوبة من المصدر مع PYTHONPATH=src.
| الحقل | النوع | الغرض | المثال |
|---|---|---|---|
matcher | string | نمط اسم الأداة (أو "*" للأحداث غير المرتبطة بأداة) | "Write" |
hooks[].type | القيمة الحرفية "command" | نوع معالِج الخطّاف الوحيد المدعوم حاليًا | "command" |
hooks[].command | string | أمر قابل للتنفيذ؛ يستخدم Apothem العنصر النائب ${PYTHON_BIN}، ويُحلّ عند التثبيت | "${PYTHON_BIN}" |
hooks[].args | مصفوفة سلاسل نصية | وسائط بصيغة exec: مسار نص برمجي تحت ${HARNESS_ROOT}/.apothem/support/، ثم وسائطه | ["${HARNESS_ROOT}/.apothem/support/hooks/dispatch.py", "SessionStart"] |
hooks[].timeout | integer بالثواني | الحدّ الأقصى لزمن التشغيل قبل أن يُنهي المضيف الخطّاف | 30 |
hooks[].statusMessage | string | تسمية قصيرة تظهر في واجهة المضيف | "Session start" |
الأحداث المطلوبة
يُسجِّل قالب Claude Code أربعة أحداث: SessionStart وPreToolUse وPostToolUse وStop. ويتحقّق scripts/dev/validate_hooks.py في settings.json من وجود الأحداث الخمسة الواردة في الجدول أدناه، وهي مجموعة مختلفة، ويُبلغ عن كل حدث لا يجده بوصفه تحذيرًا لا إخفاقًا. وPostToolUse مُسجَّل لكنه ليس من الأحداث الخمسة. أما PreCompact وPostCompact فمن الأحداث الخمسة لكنهما غير مُسجَّلين في Claude Code (مرجع الخطّافات)، ولذلك تُصدر أداة الفحص تحذيرًا بشأن كليهما هناك.
تعكس قيم المهلة ميزانيات أحداث الخطّافات المرجعية — يُعيد الجدول أدناه إيرادها تيسيرًا على القارئ؛ والمصدر المرجعي هو الحاكم.
| الحدث | المهلة المعتادة | الغرض |
|---|---|---|
SessionStart | 30 ثانية | قراءة الذاكرة، والتحقّق من حالة الخطّة، والإبلاغ عن الجاهزية |
PreToolUse | 10 ثوانٍ | التحقّق من عمليات الكتابة وفق سياسات عزل المحتوى + البيانات الأمامية |
PreCompact | 30 ثانية | التحقّق من حفظ الحالة خارجيًا قبل ضغط السياق |
PostCompact | 30 ثانية | استعادة حالة العمل بعد ضغط السياق |
Stop | 60 ثانية | الحفظ الخارجي عند نهاية الجلسة — حالة الاستئناف، والمخرجات، والقرارات |
يقبل dispatch.py أيضًا UserPromptSubmit وNotification في
قائمة الأحداث المسموح بها لديه من أجل التوافق المستقبلي؛ ولا يُوصَل أيٌّ منهما في
القوالب المشحونة. أضِف كتلة مُطابِق بنمط صيغة exec نفسه للتفعيل.
طبقة Python
يمرّ كل أمر خطّاف عبر مُوزِّع Python نفسه:
| الملف | الدور |
|---|---|
src/apothem/hooks/dispatch.py | يُوجِّه SessionStart إلى session_start_bootstrap.main() وكل حدث آخر مُدرَج في قائمة السماح إلى emit_hook_context.main(). يخرج دائمًا بالرمز 0. |
src/apothem/hooks/session_start_bootstrap.py | برنامج خطّاف بدء الجلسة — يُصدِر سياق الذاكرة وملخّص حزمة الخطّة. |
src/apothem/hooks/emit_hook_context.py | مُصدِر الخطّافات الافتراضي — يكتب مظروفًا صالحًا يحمل حمولة --context-file المُسجَّلة. |
src/apothem/hooks/messages/*.md | حمولة سياق ثابتة يُشار إليها عبر --context-file. |
التحقّق
يفرض scripts/dev/validate_hooks.py عقد الخطّافات:
- يُحلَّل
settings.jsonبوصفه JSON ويُعلِن كل حدث من الأحداث الخمسة الواردة في الجدول؛ والحدث المفقود تحذير لا إخفاق. - توجد برامج Python النصية الثلاثة جميعها وتُحلَّل بوصفها شيفرة Python صالحة.
- توجد كل ملفات الرسائل التي تشير إليها وسائط
--context-file. - لا تظهر مسارات مستخدم مطلقة مكتوبة حرفيًا في الشيفرة (
C:\Users\...وما شابه) فيsrc/apothem/hooks/**.py. - تقتصر مُنتَجات الصدفة تحت
src/apothem/hooks/وscripts/على الملفات الوسيطة المعتمدة لتحديد الموقع / الإقلاع.
المخطط: CLAUDE.md
المسار: CLAUDE.md (الجذر)
الغرض: تعليمات Claude Code بنطاق المشروع.
البيانات الأمامية الإلزامية بصيغة YAML
---
name: "CLAUDE"
version: "MAJOR.MINOR.PATCH"
updated: "YYYY-MM-DD"
description: "Project-scoped Claude Code instructions for the Apothem source repository"
scope: "project"
portability: "project-local"
---الأقسام
يُؤلَّف CLAUDE.md في أقسام نثرية، موصوفة في CLAUDE.md. لا يشترط أي مدقّق قائمة أقسام ثابتة: يفحص scripts/dev/validate_ecosystem.py مفاتيح البيانات الأمامية أعلاه.
قائمة فحص التحقّق
يجب أن يستوفي كل مُنتَج هذه الفحوص:
التحقّق من البيانات الأمامية
- صيغة YAML صحيحة نحويًا (بلا أخطاء تحليل)
- كل الحقول الإلزامية لنوع المُنتَج موجودة
- يتّبع
nameاصطلاح kebab-case -
versionدلالية (MAJOR.MINOR.PATCH) -
updatedبصيغة تاريخ ISO 8601 (YYYY-MM-DD) -
descriptionسلسلة غير فارغة في سطر واحد - تطابق الحقول الاختيارية قيم التعداد المتوقّعة (إن انطبق ذلك)
- لا أخطاء إملائية في أسماء الحقول (استخدم الأسماء المرجعية من المخطط)
- لا مسافات بيضاء زائدة ولا مشكلات تنسيق
التحقّق من المحتوى
- يبدأ المحتوى في سطر جديد بعد
---الختامي؛ وفي ملفات عائلة Markdown يكون سطر ترويسة SPDX المرجعي هو أول محتوى بعده - لا إشارات داخلية للخطط (امتثالًا لـ CM-7)
- تُحَلّ الإحالات المتقاطعة (إن كان المُنتَج يسرد مُنتَجات أخرى)
- تستخدم الروابط مسارات نسبية بشرطات مائلة أمامية
التحقّق من قابلية النقل
- لا مسارات مطلقة مكتوبة حرفيًا (استخدم المسارات النسبية)
- لا صياغة خاصة بـ Windows في المُنتَجات ذات النطاق الشامل
- تستخدم فواصل المسارات الشرطات المائلة الأمامية
- تستخدم متغيّرات البيئة صيغة محايدة للمنصّة (
${VAR}أو الصيغة الأصلية للأداة)
ملاحظات
- الاتساق بوصفه أمانًا: تُمكِّن البيانات الأمامية المرجعية من التحقّق الآلي والأدوات والتحقّق المتبادل بين المُنتَجات. وتتراكم الانحرافات بسرعة.
- إعلان قابلية النقل: لا يمكن لكل المُنتَجات أن تكون شاملة. أعلِن القيود صراحةً، فتوثيق تحفّظٍ خيرٌ من شحن خلل صامت.
- kebab-case للأسماء: سهلة الاستخدام في عناوين URL والبرامج النصية وسياقات سطر الأوامر. تجنّب المسافات والشرطات السفلية وcamelCase في الأسماء.
- نظافة رفع النسخة: يجب أن يرفع كل تعديل يغيّر السلوك
versionوupdatedمعًا. ولا تُغيّر إصلاحات الأخطاء المطبعية أو الروابط أو التنسيق قيمةَversion؛ وترفع الأقسام الاختيارية أو الأنماط المضادة الجديدة MINOR؛ وترفع إعادة التنظيم البنيوية أو تغييرات العقد MAJOR.
اتفاقيات الالتزام (Commit)
تُرسي تنسيق رسائل الالتزام، ووسم الإصدارات، وانضباط التأليف البشري حصرًا، والإيقاع لكل مهمة لمصنوعات git والتحكم في الإصدارات.
سجلّات الأدوات (Artifact Registries)
تعداد كامل لأدوات منظومة Apothem: الأوامر، القواعد، العاملون المساعِدون المُفوَّضون، الخطّافات، المهارات، أنماط الإخراج، انضباط تطوّر الأدوات، وإعلانات صنف الأداة الفارغ.