CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Overview
biclever.github.io is the Biclever marketing site (custom domain biclever.com, see CNAME). It is a Jekyll 4 build deployed via Netlify (netlify.toml runs jekyll build → _site).
Common commands
bundle install # install Jekyll + plugins (first time / after Gemfile changes)
bundle exec jekyll serve # local dev server with live reload
bundle exec jekyll build # production build into _site
JEKYLL_ENV=production bundle exec jekyll build # mirrors Netlify build
There are no tests or linters.
Architecture
_config.ymldefines two Jekyll collections, each auto-assigned a layout viadefaults:products(_products/*.md) →_layouts/product.html, sorted byweight, surfaced on the home page (capped byhome.limit_products).pages(_pages/*.md) →_layouts/page.html(knowledge-base / EULA / how-to articles, distinct from top-level*.mdlikeabout.md,contact.md).
- Top-level
.mdfiles (index.md,about.md,products.md,pages.md,contact.md) are landing pages that use the corresponding layouts in_layouts/. _data/*.{yml,json}holds site-wide content consumed by includes/layouts:menus.yml,social.json,features.json,seo.yml,contact.yml. Edit these rather than hard-coding values in templates._includes/is small and shared (header, footer, menus, social, GA snippet);_sass/feedsassets/css/style.css. Sass output iscompressed.- Plugins enabled:
jekyll-environment-variables,jekyll-sitemap. Both are GitHub-Pages-incompatible, which is why deployment goes through Netlify, not GH Pages.
Content authoring notes
- Product pages live in
_products/*.mdwith front matter includingtitle,description,date,published, andweight(controls home-page ordering). _pages/*.mdare SEO/long-tail articles — slugs are URL-significant because ofpermalink: pretty.404.htmlis at repo root (Jekyll/Netlify convention).
Page text-width / image-width convention
Body copy on content pages is capped at 37.5rem (~600px) for readability, while the surrounding column is wider (Bootstrap container ~1140px). The cap is implemented in _sass/components/_content.scss on direct children of .content (> p, > ul, > ol, > h1..h6, > blockquote, > pre, > table, > .call) with margin-left/right: auto to centre them in the column.
Implications when adding pages or layouts:
- Wrap rendered Markdown in `<div class="content"><div class="container pb-3 pt-6 pt-md-10">
Tools Designed to Assist You
Elevate the quality of your analytics, accelerate your development processes, and streamline maintenance tasks of solutions built on SAP BusinessObjects®.
</div> </div> </div> </div> </div>
Unx Documenter Free
Extracts UNX universe metadata into Excel and highlights differences between universe versions. Perfect for audits, documentation, and change tracking.
Unv Documenter Free
The tool extracts Unv universe metadata to an Excel spreadsheet. You can also use it to find differences between universes.
CMS Query Builder Free
The tool allows to build and run queries against CMS system database and export the result to Excel.
Webi Master Pro
The tool automates modifications and metadata extraction from Webi documents.
Unx Editor Pro
The tool automates modifications of Unx universes.
Security Exporter Pro
The tool allows extracting access rights to an Excel.
Webi MCP Pro
An MCP server that lets AI assistants explore SAP BO universes and run ad-hoc Webi queries through Claude Desktop, Claude Code, and other MCP clients.
</div> (see _layouts/page.html, _layouts/pro.html). Anything you want capped at the text width must be a direct child of .content and one of the selectors above — wrap custom blocks accordingly, or move them inside .content so they inherit the cap (this is what pro.html does for .pro-buy, the "Included tools" <h2>, and .pro-products`).
- Images in Markdown are wrapped in
<p>by kramdown and so inherit the text cap. To let an image span the full column width, add{:.full}after it: {:.full}The
.fullclass (andp.full) is whitelisted in_content.scssto break out tomax-width: 100%and centre. - Custom
<div>s inside.contentare NOT in the selector list, so they keep the column’s full width unless you give them their ownmax-width(e.g..pro-buyis capped at 280px in_page-pro.scsswithmargin: ... auto ...to align with the centred text).