mirror of
https://github.com/affaan-m/ECC.git
synced 2026-09-28 20:45:11 +02:00
Merge reviewed contributor PR #3059 into backlog batch
Source-PR: https://github.com/affaan-m/ECC/pull/3059
Source-Head: 1673814b0b
Local integration checkpoint; aggregate review and hosted acceptance pending.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: pubmed-database
|
||||
name: scientific-db-pubmed-database
|
||||
description: 生物医学文献、MeSH クエリ、PMID 検索、引用取得、および API を利用した文献モニタリングのための PubMed および NCBI E-utilities の直接検索ワークフロー。
|
||||
origin: community
|
||||
---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: uspto-database
|
||||
name: scientific-db-uspto-database
|
||||
description: 公式記録の検索、PatentSearch クエリ、TSDR チェック、譲渡データ、および再現可能な IP 調査ログのための USPTO 特許・商標データワークフロー。
|
||||
origin: community
|
||||
---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: gget
|
||||
name: scientific-pkg-gget
|
||||
description: ゲノムデータベースへのクイック検索、配列検索、BLAST スタイルの検索、エンリッチメントチェック、および再現可能なバイオインフォマティクス証拠ログのための gget CLI および Python ワークフロー。
|
||||
origin: community
|
||||
---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: literature-review
|
||||
name: scientific-thinking-literature-review
|
||||
description: 学術、生物医学、技術、科学的なトピックに対するシステマティックな文献レビューワークフロー。検索計画、ソースのスクリーニング、統合、引用確認、証拠ログを含む。
|
||||
origin: community
|
||||
---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: scholar-evaluation
|
||||
name: scientific-thinking-scholar-evaluation
|
||||
description: 論文、提案書、文献レビュー、方法論セクション、証拠の質、引用サポート、研究論文フィードバックのための構造化された学術的作業評価。
|
||||
origin: community
|
||||
---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: pubmed-database
|
||||
name: scientific-db-pubmed-database
|
||||
description: Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring. Use when a task needs biomedical literature from PubMed rather than general web search.
|
||||
metadata:
|
||||
origin: community
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: uspto-database
|
||||
name: scientific-db-uspto-database
|
||||
description: USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs. Use when a task needs official United States patent or trademark records from USPTO systems.
|
||||
metadata:
|
||||
origin: community
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: gget
|
||||
name: scientific-pkg-gget
|
||||
description: gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs. Use when a task needs quick bioinformatics lookup across genomic reference databases with the gget CLI or Python package.
|
||||
metadata:
|
||||
origin: community
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: literature-review
|
||||
name: scientific-thinking-literature-review
|
||||
description: Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging. Use when the task is to find, screen, synthesize, and cite a body of academic or technical literature.
|
||||
metadata:
|
||||
origin: community
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: scholar-evaluation
|
||||
name: scientific-thinking-scholar-evaluation
|
||||
description: Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback. Use when evaluating academic or scientific work — papers, proposals, methods sections, or evidence quality — against a repeatable rubric.
|
||||
metadata:
|
||||
origin: community
|
||||
|
||||
@@ -320,12 +320,34 @@ test('published carrier schema validates outputs and rejects extra or capability
|
||||
}));
|
||||
|
||||
test('real canonical inventory projects every selected bundled resource without relying on mirrors', () => {
|
||||
const carrier = plan({ repoRoot: REPO_ROOT, profileId: 'full@1', target: 'opencode' });
|
||||
const registry = registryLibrary.loadContextRegistry({ repoRoot: REPO_ROOT });
|
||||
assert.deepEqual(carrier.selectedIds, registry.entries.map(entry => entry.id));
|
||||
assert.equal(carrier.files.filter(file => file.kind === 'copy').length,
|
||||
registry.entries.reduce((count, entry) => count + entry.resources.length, 0));
|
||||
assert.ok(carrier.files.every(file => file.kind !== 'copy' || file.sourcePath.startsWith('skills/')));
|
||||
assert.ok(carrier.files.some(file => file.destinationPath === '.opencode/skills/gget/SKILL.md'
|
||||
&& file.skillId === 'skill:scientific-pkg-gget'));
|
||||
const renamed = [
|
||||
['scientific-db-pubmed-database', 'pubmed-database'],
|
||||
['scientific-db-uspto-database', 'uspto-database'],
|
||||
['scientific-pkg-gget', 'gget'],
|
||||
['scientific-thinking-literature-review', 'literature-review'],
|
||||
['scientific-thinking-scholar-evaluation', 'scholar-evaluation'],
|
||||
];
|
||||
for (const target of Object.keys(LAYOUTS)) {
|
||||
const carrier = plan({ repoRoot: REPO_ROOT, profileId: 'full@1', target });
|
||||
assert.deepEqual(carrier.selectedIds, registry.entries.map(entry => entry.id));
|
||||
assert.equal(carrier.files.filter(file => file.kind === 'copy').length,
|
||||
registry.entries.reduce((count, entry) => count + entry.resources.length, 0));
|
||||
assert.ok(carrier.files.every(file => file.kind !== 'copy' || file.sourcePath.startsWith('skills/')));
|
||||
for (const [name, previousName] of renamed) {
|
||||
const entry = registry.entries.find(value => value.id === `skill:${name}`);
|
||||
assert.ok(entry, `missing renamed scientific skill: ${name}`);
|
||||
const copies = carrier.files.filter(file => file.kind === 'copy' && file.skillId === entry.id);
|
||||
assert.deepEqual(copies.map(({ sourcePath, destinationPath, digest, bytes }) => (
|
||||
{ sourcePath, destinationPath, digest, bytes }
|
||||
)), entry.resources.map(resource => ({
|
||||
sourcePath: resource.path,
|
||||
destinationPath: `${LAYOUTS[target].skillRoot}/${name}/${resource.path.slice(`skills/${name}/`.length)}`,
|
||||
digest: resource.digest, bytes: resource.bytes,
|
||||
})));
|
||||
assert.equal(carrier.files.some(file => file.destinationPath.startsWith(
|
||||
`${LAYOUTS[target].skillRoot}/${previousName}/`
|
||||
)), false, `old native folder must not be duplicated: ${target}/${previousName}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -15,11 +15,24 @@ test('independent packed oracle separates canonical IDs from native metadata nam
|
||||
const skills = discoverPublishedSkills(require('node:path').resolve(__dirname, '../..'));
|
||||
const pubmed = skills.find(skill => skill.id === 'skill:scientific-db-pubmed-database');
|
||||
assert.deepEqual(pubmed, { id: 'skill:scientific-db-pubmed-database',
|
||||
sourceName: 'scientific-db-pubmed-database', nativeName: 'pubmed-database' });
|
||||
sourceName: 'scientific-db-pubmed-database', nativeName: 'scientific-db-pubmed-database' });
|
||||
assert.equal(new Set(skills.map(skill => skill.id)).size, skills.length);
|
||||
assert.equal(new Set(skills.map(skill => skill.nativeName)).size, skills.length);
|
||||
});
|
||||
|
||||
test('packed oracle preserves a native name that differs from its canonical directory', () => {
|
||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'ecc-packed-names-'));
|
||||
try {
|
||||
const skillRoot = path.join(root, 'skills', 'canonical-fixture');
|
||||
fs.mkdirSync(skillRoot, { recursive: true });
|
||||
fs.writeFileSync(path.join(skillRoot, 'SKILL.md'),
|
||||
'---\nname: native-fixture\ndescription: Inert discovery fixture.\n---\n');
|
||||
assert.deepEqual(discoverPublishedSkills(root), [{
|
||||
id: 'skill:canonical-fixture', sourceName: 'canonical-fixture', nativeName: 'native-fixture',
|
||||
}]);
|
||||
} finally { fs.rmSync(root, { recursive: true, force: true }); }
|
||||
});
|
||||
|
||||
test('tier claims and transferred artifact verification remain explicit', () => {
|
||||
for (const tier of [1, 2]) {
|
||||
const manifest = manifestFor({ ...input, tier });
|
||||
|
||||
Reference in New Issue
Block a user